structure set up - no change yet
R=r
OCL=28966
CL=28966
dump("cgen-res", res);
}
if(n == N || n->type == T)
- return;
+ goto ret;
if(res == N || res->type == T)
fatal("cgen: res nil");
+ // static initializations
+ if(gen_as_init(n, res))
+ goto ret;
+
if(n->ullman >= UINF) {
if(n->op == OINDREG)
fatal("cgen: this is going to misscompile");
c--;
}
}
+
+int
+gen_as_init(Node *nr, Node *nl)
+{
+ return 0;
+}
void allocparams(void);
void checklabels();
void ginscall(Node*, int);
+int gen_as_init(Node*, Node*);
/*
* cgen
for(pl=plist; pl!=nil; pl=pl->link) {
for(p=pl->firstpc; p!=P; p=p->link) {
p->loc = pcloc;
- pcloc++;
+ if(p->as != ADATA && p->as != AGLOBL)
+ pcloc++;
}
}
//dump("r", fn->nbody);
popdcl();
+ initflag = 1; // flag for loader static initialization
compile(fn);
+ initflag = 0;
}
int32 vargen; // unique name for OTYPE/ONAME
int32 lineno;
vlong xoffset;
- int32 ostk;
};
#define N ((Node*)0)
EXTERN int dclcontext; // PEXTERN/PAUTO
EXTERN int importflag;
EXTERN int inimportsys;
+EXTERN int initflag; // compiling the init fn
EXTERN uint32 iota;
EXTERN Node* lastconst;