move portable code generation (basic statements) to gc.
R=ken
OCL=26929
CL=26929
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 0a6f1cc..2654d48 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -938,25 +938,11 @@
int isconst(Node*, int);
/*
- * gen.c/gsubr.c/obj.c
- */
-void betypeinit(void);
-vlong convvtox(vlong, int);
-void compile(Node*);
-void proglist(void);
-int optopop(int);
-void dumpobj(void);
-void dowidth(Type*);
-void argspace(int32);
-Node* nodarg(Type*, int);
-Type* deep(Type*);
-Type* shallow(Type*);
-
-/*
* align.c
*/
uint32 rnd(uint32, uint32);
void dowidth(Type*);
+int argsize(Type*);
/*
* bits.c
@@ -972,3 +958,66 @@
int Qconv(Fmt *fp);
int bitno(int32);
+/*
+ * gen.c
+ */
+typedef struct Prog Prog;
+#define P ((Prog*)0)
+
+typedef struct Label Label;
+struct Label
+{
+ uchar op; // OGOTO/OLABEL
+ Sym* sym;
+ Prog* label; // pointer to code
+ Prog* breakpc; // pointer to code
+ Prog* continpc; // pointer to code
+ Label* link;
+};
+#define L ((Label*)0)
+
+EXTERN Label* labellist;
+EXTERN Label* findlab(Sym*);
+
+EXTERN Prog* continpc;
+EXTERN Prog* breakpc;
+EXTERN Prog* pc;
+EXTERN Prog* firstpc;
+
+void allocparams(void);
+void cgen_as(Node *nl, Node *nr);
+void cgen_callmeth(Node *n, int proc);
+void cgen_dcl(Node *n);
+void cgen_proc(Node *n, int proc);
+void checklabels(void);
+Label* findlab(Sym *s);
+void gen(Node *n);
+void newlab(int op, Sym *s);
+Node* sysfunc(char *name);
+
+
+/*
+ * gen.c/gsubr.c/obj.c
+ */
+void betypeinit(void);
+vlong convvtox(vlong, int);
+void compile(Node*);
+void proglist(void);
+int optopop(int);
+void dumpobj(void);
+void dowidth(Type*);
+void argspace(int32);
+Node* nodarg(Type*, int);
+Type* deep(Type*);
+Type* shallow(Type*);
+Prog* gjmp(Prog*);
+void patch(Prog*, Prog*);
+void bgen(Node *n, int true, Prog *to);
+void cgen_asop(Node *n);
+void cgen_call(Node *n, int proc);
+void cgen_callinter(Node *n, Node *res, int proc);
+void cgen_ret(Node *n);
+int isfat(Type*);
+void clearfat(Node *n);
+void cgen(Node*, Node*);
+void gused(Node*);