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: