summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/gc/go.h1
-rw-r--r--src/cmd/gc/subr.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index dc6de63c6..775a4cca1 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -156,6 +156,7 @@ struct Type
uchar embedded; // TFIELD embedded type
uchar siggen;
uchar funarg;
+ uchar copyany;
// TFUNCT
uchar thistuple;
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c
index cd2fc4d2d..5638df4b7 100644
--- a/src/cmd/gc/subr.c
+++ b/src/cmd/gc/subr.c
@@ -1779,6 +1779,8 @@ loop:
goto loop;
case TANY:
+ if(!st->copyany)
+ return 0;
*stp = t;
break;
@@ -1841,6 +1843,11 @@ deep(Type *t)
nt = t; // share from here down
break;
+ case TANY:
+ nt = shallow(t);
+ nt->copyany = 1;
+ break;
+
case TPTR32:
case TPTR64:
case TCHAN: