summaryrefslogtreecommitdiff
path: root/src/cmd/gc/walk.c
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2009-05-21 15:44:06 -0700
committerKen Thompson <ken@golang.org>2009-05-21 15:44:06 -0700
commita25a6e20ee9fb6d3d1fd33d012b41ac3e45e8cd0 (patch)
tree88ca80fd2244b2c7618ac3e9d5623ce4b12af71c /src/cmd/gc/walk.c
parenta03b39f481aa68c110619123f7f15c9915f03f35 (diff)
downloadgolang-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.c9
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;
}