diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/gc/typecheck.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index d6df9ddb4..ae1d13d17 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -612,6 +612,12 @@ reswitch: defaultlit(&n->left, T); defaultlit(&n->right->left, types[TUINT]); defaultlit(&n->right->right, types[TUINT]); + if(isfixedarray(n->left->type)) { + // Insert explicit & before fixed array + // so that back end knows to move to heap. + n->left = nod(OADDR, n->left, N); + typecheck(&n->left, top); + } implicitstar(&n->left); if(n->right->left == N) { yyerror("missing slice bounds?"); |