diff options
author | Ken Thompson <ken@golang.org> | 2009-05-21 15:44:06 -0700 |
---|---|---|
committer | Ken Thompson <ken@golang.org> | 2009-05-21 15:44:06 -0700 |
commit | a25a6e20ee9fb6d3d1fd33d012b41ac3e45e8cd0 (patch) | |
tree | 88ca80fd2244b2c7618ac3e9d5623ce4b12af71c /src/cmd/gc/walk.c | |
parent | a03b39f481aa68c110619123f7f15c9915f03f35 (diff) | |
download | golang-a25a6e20ee9fb6d3d1fd33d012b41ac3e45e8cd0.tar.gz |
some array init bugs
renamed 6g/(gen|align|obj).c
R=r
OCL=29205
CL=29205
Diffstat (limited to 'src/cmd/gc/walk.c')
-rw-r--r-- | src/cmd/gc/walk.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 8b4fc40f2..e20f0c75c 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -3970,9 +3970,11 @@ structlit(Node *n, Node *var) r = listfirst(&saver, &n->left); if(r != N && r->op == OEMPTY) r = N; + if(r == N) + return var; mixflag = 0; - if(r != N && r->op == OKEY) { + if(r->op == OKEY) { a = nod(OAS, var, N); addtop = list(addtop, a); goto loop2; @@ -4050,11 +4052,11 @@ arraylit(Node *n, Node *var) r = N; while(r != N) { - b++; if(r->op == OKEY) { evconst(r->left); b = nonnegconst(r->left); } + b++; if(b > ninit) ninit = b; r = listnext(&saver); @@ -4064,7 +4066,8 @@ arraylit(Node *n, Node *var) if(b == -100) { // flag for [...] b = ninit; - t = shallow(t); + if(var == N) + t = shallow(t); t->bound = b; } |