src/cmd/gc/init.c | 8 ++------ src/cmd/gc/walk.c | 4 +++- diff --git a/src/cmd/gc/init.c b/src/cmd/gc/init.c index a89c0181fa8d05532874d678c357cdcbff2c6ee4..cdd462e55ed00bd3703d86f6cdac8597ca1271b9 100644 --- a/src/cmd/gc/init.c +++ b/src/cmd/gc/init.c @@ -37,17 +37,14 @@ * if initdone· == 2 (4) * return * throw(); (5) * } - * initdone. += 1; (6) + * initdone. = 1; (6) * // over all matching imported symbols * .init·() (7) * { } (8) * init·() // if any (9) - * initdone. += 1; (10) + * initdone. = 2; (10) * return (11) * } - * note that this code cannot have an assignment - * statement or, because of the initflag, it will - * be converted into a data statement. */ int anyinit(NodeList *n) @@ -120,7 +117,6 @@ gatevar = newname(lookup(namebuf)); addvar(gatevar, types[TUINT8], PEXTERN); // (2) - maxarg = 0; snprint(namebuf, sizeof(namebuf), "Init·"); diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index a79c75131f0ac39f355860d788f0a62ed67a60cd..86e45e12d37f337f5d91c9f01709cd670b67539f 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -701,8 +701,10 @@ r = n->right; if(l == N || r == N) goto ret; r = ascompatee1(n->op, l, r, init); - if(r != N) + if(r != N) { + r->dodata = n->dodata; n = r; + } goto ret; case OAS2: