allow data statements for simple
external variable assignements.
R=rsc
CC=golang-dev
https://golang.org/cl/1094041
diff --git a/src/cmd/gc/init.c b/src/cmd/gc/init.c
index a89c018..cdd462e 100644
--- a/src/cmd/gc/init.c
+++ b/src/cmd/gc/init.c
@@ -37,17 +37,14 @@
* return
* throw(); (5)
* }
- * initdone.<file> += 1; (6)
+ * initdone.<file> = 1; (6)
* // over all matching imported symbols
* <pkg>.init·<file>() (7)
* { <init stmts> } (8)
* init·<file>() // if any (9)
- * initdone.<file> += 1; (10)
+ * initdone.<file> = 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 @@
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 a79c751..86e45e1 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -701,8 +701,10 @@
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: