aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2010-05-03 22:51:30 -0700
committerKen Thompson <ken@golang.org>2010-05-03 22:51:30 -0700
commita3a0a5fdc3bc2debdc5fda4c11fc013076795df4 (patch)
tree431cdb49d20790439b67205f82c2e7d3b6157098
parentb9caa4ac56f306e4195dcbf5db1afd831a6049fa (diff)
downloadgo-a3a0a5fdc3bc2debdc5fda4c11fc013076795df4.tar.gz
go-a3a0a5fdc3bc2debdc5fda4c11fc013076795df4.zip
allow data statements for simple
external variable assignements. R=rsc CC=golang-dev https://golang.org/cl/1094041
-rw-r--r--src/cmd/gc/init.c8
-rw-r--r--src/cmd/gc/walk.c4
2 files changed, 5 insertions, 7 deletions
diff --git a/src/cmd/gc/init.c b/src/cmd/gc/init.c
index a89c0181fa..cdd462e55e 100644
--- a/src/cmd/gc/init.c
+++ b/src/cmd/gc/init.c
@@ -37,17 +37,14 @@ renameinit(Node *n)
* 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 @@ fninit(NodeList *n)
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 a79c75131f..86e45e12d3 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -701,8 +701,10 @@ walkexpr(Node **np, NodeList **init)
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: