Add compiler source to new directory structure
SVN=121164
diff --git a/src/cmd/6g/gg.h b/src/cmd/6g/gg.h
new file mode 100644
index 0000000..5cd31b4
--- /dev/null
+++ b/src/cmd/6g/gg.h
@@ -0,0 +1,203 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+
+#include <u.h>
+#include <libc.h>
+
+#include "../gc/go.h"
+#include "../6l/6.out.h"
+
+#ifndef EXTERN
+#define EXTERN extern
+#endif
+
+typedef struct Prog Prog;
+typedef struct Addr Addr;
+
+struct Addr
+{
+ vlong offset;
+ double dval;
+ Prog* branch;
+ char sval[NSNAME];
+
+ Sym* sym;
+ uchar type;
+ uchar index;
+ uchar etype;
+ uchar scale; /* doubles as width in DATA op */
+};
+#define A ((Addr*)0)
+
+struct Prog
+{
+ short as; // opcode
+ ulong loc; // pc offset in this func
+ ulong lineno; // source line that generated this
+ Addr from; // src address
+ Addr to; // dst address
+ Prog* link; // next instruction in this func
+};
+#define P ((Prog*)0)
+
+typedef struct Plist Plist;
+struct Plist
+{
+ Node* name;
+ Dcl* locals;
+ Prog* firstpc;
+ int recur;
+ Plist* link;
+};
+
+typedef struct Sig Sig;
+struct Sig
+{
+ char* name;
+ Sym* sym;
+ ulong hash;
+ long offset;
+ Sig* link;
+};
+
+typedef struct Case Case;
+struct Case
+{
+ Prog* sprog;
+ Node* scase;
+ Case* slink;
+};
+#define C ((Case*)0)
+
+typedef struct Pool Pool;
+struct Pool
+{
+ String* sval;
+ Pool* link;
+};
+
+EXTERN Prog* continpc;
+EXTERN Prog* breakpc;
+EXTERN Prog* pc;
+EXTERN Prog* firstpc;
+EXTERN Plist* plist;
+EXTERN Plist* plast;
+EXTERN Pool* poolist;
+EXTERN Pool* poolast;
+EXTERN Biobuf* bout;
+EXTERN long dynloc;
+EXTERN uchar reg[D_NONE];
+EXTERN ushort txt[NTYPE*NTYPE];
+EXTERN long maxround;
+EXTERN long widthptr;
+EXTERN long maxarg;
+EXTERN long stksize;
+EXTERN Sym* symstringo; // string objects
+EXTERN long stringo; // size of string objects
+EXTERN long pcloc; // instruction counter
+EXTERN String emptystring;
+extern char* anames[];
+
+/*
+ * gen.c
+ */
+void compile(Node*);
+void proglist(void);
+void gen(Node*);
+void swgen(Node*);
+Node* lookdot(Node*, Node*, int);
+void inarggen(void);
+void agen_inter(Node*, Node*);
+void cgen_as(Node*, Node*, int);
+void cgen_asop(Node*, Node*, int);
+void cgen_ret(Node*);
+void cgen_call(Node*);
+void cgen_callmeth(Node*);
+void cgen_callinter(Node*, Node*);
+void cgen_callret(Node*, Node*);
+void genpanic(void);
+int needconvert(Type*, Type*);
+void genconv(Type*, Type*);
+void allocparams(void);
+
+/*
+ * cgen
+ */
+void cgen(Node*, Node*);
+void agen(Node*, Node*);
+void igen(Node*, Node*, Node*);
+vlong fieldoffset(Type*, Node*);
+void bgen(Node*, int, Prog*);
+void sgen(Node*, Node*, ulong);
+void gmove(Node*, Node*);
+Prog* gins(int, Node*, Node*);
+int samaddr(Node*, Node*);
+void naddr(Node*, Addr*);
+
+/*
+ * gsubr.c
+ */
+void clearp(Prog*);
+void proglist(void);
+Prog* gbranch(int, Type*);
+void patch(Prog*, Prog*);
+Prog* prog(int);
+void gaddoffset(Node*);
+void gconv(int, int);
+int conv2pt(Type*);
+void belexinit(int);
+vlong convvtox(vlong, int);
+int brcom(int);
+int brrev(int);
+void fnparam(Type*, int, int);
+Sig* lsort(Sig*, int(*)(Sig*, Sig*));
+Prog* gop(int, Node*, Node*, Node*);
+void setconst(Addr*, vlong);
+void setaddr(Addr*, Node*);
+int optoas(int, Type*);
+void ginit(void);
+void gclean(void);
+void regalloc(Node*, Type*, Node*);
+void regfree(Node*);
+void regsalloc(Node*, Type*); // replace w tmpvar
+void regret(Node*, Type*);
+Node* nodarg(Type*, int);
+void nodreg(Node*, Type*, int);
+void nodindreg(Node*, Type*, int);
+void nodconst(Node*, Type*, vlong);
+Sym* signame(Type*);
+void nodtypesig(Node*, Type*);
+void gconreg(int, vlong, int);
+void buildtxt(void);
+void stringpool(Node*);
+void tempname(Node*, Type*);
+Plist* newplist(void);
+int isfat(Type*);
+void setmaxarg(Type*);
+
+/*
+ * list.c
+ */
+int Aconv(Fmt*);
+int Dconv(Fmt*);
+int Pconv(Fmt*);
+int Rconv(Fmt*);
+int Yconv(Fmt*);
+void listinit(void);
+
+/*
+ * obj
+ */
+void zname(Biobuf*, Sym*, int);
+void zaddr(Biobuf*, Addr*, int);
+void ieeedtod(Ieee*, double);
+void dumpstrings(void);
+void dumpsignatures(void);
+
+/*
+ * align
+ */
+void dowidth(Type*);
+ulong rnd(ulong, ulong);