summaryrefslogtreecommitdiff
path: root/src/cmd/6g/gg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6g/gg.h')
-rw-r--r--src/cmd/6g/gg.h36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/cmd/6g/gg.h b/src/cmd/6g/gg.h
index 47a540082..ceb6a2caa 100644
--- a/src/cmd/6g/gg.h
+++ b/src/cmd/6g/gg.h
@@ -14,19 +14,22 @@ typedef struct Addr Addr;
struct Addr
{
vlong offset;
- double dval;
- Prog* branch;
- char sval[NSNAME];
+
+ union {
+ double dval;
+ vlong vval;
+ Prog* branch;
+ char sval[NSNAME];
+ } u;
Sym* gotype;
Sym* sym;
Node* node;
- int width;
+ int64 width;
uchar type;
uchar index;
uchar etype;
uchar scale; /* doubles as width in DATA op */
- uchar pun; /* dont register variable */
};
#define A ((Addr*)0)
@@ -58,7 +61,7 @@ EXTERN Node* throwreturn;
extern vlong unmappedzero;
/*
- * gen.c
+ * ggen.c
*/
void compile(Node*);
void proglist(void);
@@ -71,29 +74,31 @@ void cgen_proc(Node*, int);
void cgen_callret(Node*, Node*);
void cgen_div(int, Node*, Node*, Node*);
void cgen_bmul(int, Node*, Node*, Node*);
-void cgen_shift(int, Node*, Node*, Node*);
+void cgen_hmul(Node*, Node*, Node*);
+void cgen_shift(int, int, Node*, Node*, Node*);
void cgen_dcl(Node*);
int needconvert(Type*, Type*);
void genconv(Type*, Type*);
void allocparams(void);
-void checklabels();
+void checklabels(void);
void ginscall(Node*, int);
int gen_as_init(Node*);
+void clearslim(Node*);
/*
- * cgen
+ * cgen.c
*/
void agen(Node*, Node*);
+void agenr(Node*, Node*, Node*);
+void cgenr(Node*, Node*, Node*);
void igen(Node*, Node*, Node*);
vlong fieldoffset(Type*, Node*);
-void bgen(Node*, int, Prog*);
void sgen(Node*, Node*, int64);
void gmove(Node*, Node*);
Prog* gins(int, Node*, Node*);
int samaddr(Node*, Node*);
void naddr(Node*, Addr*, int);
void cgen_aret(Node*, Node*);
-int cgen_inline(Node*, Node*);
void restx(Node*, Node*);
void savex(int, Node*, Node*, Node*, Type*);
int componentgen(Node*, Node*);
@@ -103,9 +108,8 @@ int componentgen(Node*, Node*);
*/
void clearp(Prog*);
void proglist(void);
-Prog* gbranch(int, Type*);
+Prog* gbranch(int, Type*, int);
Prog* prog(int);
-void gaddoffset(Node*);
void gconv(int, int);
int conv2pt(Type*);
vlong convvtox(vlong, int);
@@ -126,9 +130,9 @@ Plist* newplist(void);
int isfat(Type*);
void sudoclean(void);
int sudoaddable(int, Node*, Addr*);
-void afunclit(Addr*);
-void datagostring(Strlit*, Addr*);
+void afunclit(Addr*, Node*);
void nodfconst(Node*, Type*, Mpflt*);
+void gtrack(Sym*);
/*
* cplx.c
@@ -136,12 +140,12 @@ void nodfconst(Node*, Type*, Mpflt*);
int complexop(Node*, Node*);
void complexmove(Node*, Node*);
void complexgen(Node*, Node*);
-void complexbool(int, Node*, Node*, int, Prog*);
/*
* gobj.c
*/
void datastring(char*, int, Addr*);
+void datagostring(Strlit*, Addr*);
/*
* list.c