diff options
author | Russ Cox <rsc@golang.org> | 2010-04-29 15:52:27 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-04-29 15:52:27 -0700 |
commit | 77722362c5a7ac05c5e5010a75630cbb9aae2585 (patch) | |
tree | f625a35087e357754b4f08a7442cfbaf8f1a413c /src | |
parent | 154643d15cd912706dd21e49a3fe1be5a9361e06 (diff) | |
download | golang-77722362c5a7ac05c5e5010a75630cbb9aae2585.tar.gz |
gc: bug268
Fixes issue 745.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1008045
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?"); |