From 1a0860b93f274570dfdea27dbc0d5c94240b6c61 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 14 Sep 2009 14:27:19 -0700 Subject: [PATCH] make 5g, 8g build again by disabling init code. R=ken OCL=34604 CL=34604 --- src/cmd/5g/cgen.c | 4 -- src/cmd/5g/gg.h | 1 - src/cmd/5g/ggen.c | 113 +--------------------------------------- src/cmd/8g/cgen.c | 4 -- src/cmd/8g/ggen.c | 130 +--------------------------------------------- 5 files changed, 2 insertions(+), 250 deletions(-) diff --git a/src/cmd/5g/cgen.c b/src/cmd/5g/cgen.c index b99350c31c..d9876adf98 100644 --- a/src/cmd/5g/cgen.c +++ b/src/cmd/5g/cgen.c @@ -60,10 +60,6 @@ cgen(Node *n, Node *res) while(n->op == OCONVNOP) n = n->left; - // static initializations - if(initflag && gen_as_init(n, res)) - goto ret; - if(n->ullman >= UINF) { if(n->op == OINDREG) fatal("cgen: this is going to misscompile"); diff --git a/src/cmd/5g/gg.h b/src/cmd/5g/gg.h index ded072f34c..34b330e55a 100644 --- a/src/cmd/5g/gg.h +++ b/src/cmd/5g/gg.h @@ -82,7 +82,6 @@ void genconv(Type*, Type*); void allocparams(void); void checklabels(); void ginscall(Node*, int); -int gen_as_init(Node*, Node*); /* * cgen diff --git a/src/cmd/5g/ggen.c b/src/cmd/5g/ggen.c index a3306b44f7..abd44e51b8 100644 --- a/src/cmd/5g/ggen.c +++ b/src/cmd/5g/ggen.c @@ -536,118 +536,7 @@ no: } int -gen_as_init(Node *nr, Node *nl) +gen_as_init(Node *n) { - Node nam, nod1; - Prog *p; - - if(!initflag) - goto no; - - if(nr == N) { - if(!stataddr(&nam, nl)) - goto no; - if(nam.class != PEXTERN) - goto no; - return 1; - } - - if(nr->op == OCOMPSLICE) { - // create a slice pointing to an array - if(!stataddr(&nam, nl)) { - dump("stataddr", nl); - goto no; - } - - p = gins(ADATA, &nam, nr->left); - p->reg = types[tptr]->width; - p->to.type = D_CONST; -//print("%P\n", p); - - nodconst(&nod1, types[TINT32], nr->left->type->bound); - p = gins(ADATA, &nam, &nod1); - p->reg = types[TINT32]->width; - p->from.offset += types[tptr]->width; -//print("%P\n", p); - - p = gins(ADATA, &nam, &nod1); - p->reg = types[TINT32]->width; - p->from.offset += types[tptr]->width+types[TINT32]->width; - - goto yes; - } - - if(nr->op == OCOMPMAP) { - goto yes; - } - - if(nr->type == T || - !eqtype(nl->type, nr->type)) - goto no; - - if(!stataddr(&nam, nl)) - goto no; - if(nam.class != PEXTERN) - goto no; - - switch(nr->op) { - default: - goto no; - - case OLITERAL: - goto lit; - } - -no: return 0; - -lit: - switch(nr->type->etype) { - default: - goto no; - - case TBOOL: - if(memcmp(nam.sym->name, "initdone·", 9) == 0) - goto no; - case TINT8: - case TUINT8: - case TINT16: - case TUINT16: - case TINT32: - case TUINT32: - case TINT64: - case TUINT64: - case TINT: - case TUINT: - case TFLOAT32: - case TFLOAT64: - case TFLOAT: - p = gins(ADATA, &nam, nr); - p->reg = nr->type->width; - break; - - case TSTRING: - p = gins(ADATA, &nam, N); - datastring(nr->val.u.sval->s, nr->val.u.sval->len, &p->to); - p->reg = types[tptr]->width; - p->to.type = D_CONST; -//print("%P\n", p); - - nodconst(&nod1, types[TINT32], nr->val.u.sval->len); - p = gins(ADATA, &nam, &nod1); - p->reg = types[TINT32]->width; - p->from.offset += types[tptr]->width; -//print("%P\n", p); - - p = gins(ADATA, &nam, &nod1); - p->reg = types[TINT32]->width; - p->from.offset += types[tptr]->width+types[TINT32]->width; - break; - } - -yes: -//dump("\ngen_as_init", nl); -//dump("", nr); -//print("%P\n", p); - return 1; } diff --git a/src/cmd/8g/cgen.c b/src/cmd/8g/cgen.c index 94627f50be..6e22c5489d 100644 --- a/src/cmd/8g/cgen.c +++ b/src/cmd/8g/cgen.c @@ -64,10 +64,6 @@ cgen(Node *n, Node *res) while(n->op == OCONVNOP) n = n->left; - // static initializations - if(initflag && gen_as_init(n, res)) - return; - // function calls on both sides? introduce temporary if(n->ullman >= UINF && res->ullman >= UINF) { tempalloc(&n1, n->type); diff --git a/src/cmd/8g/ggen.c b/src/cmd/8g/ggen.c index 7c4dfdbc28..c6abe174e0 100644 --- a/src/cmd/8g/ggen.c +++ b/src/cmd/8g/ggen.c @@ -785,135 +785,7 @@ no: } int -gen_as_init(Node *nr, Node *nl) +gen_as_init(Node *n) { - Node nam, nod1, nhi, nlo; - Prog *p; - Addr a; - - if(!initflag) - goto no; - - if(nr == N) { - if(!stataddr(&nam, nl)) - goto no; - if(nam.class != PEXTERN) - goto no; - return 1; - } - - if(nr->op == OCOMPSLICE) { - // create a slice pointing to an array - if(!stataddr(&nam, nl)) { - dump("stataddr", nl); - goto no; - } - - data(); - p = gins(ADATA, &nam, nr->left); - p->from.scale = types[tptr]->width; - p->to.index = p->to.type; - p->to.type = D_ADDR; -//print("%P\n", p); - - nodconst(&nod1, types[TINT32], nr->left->type->bound); - p = gins(ADATA, &nam, &nod1); - p->from.scale = types[TINT32]->width; - p->from.offset += types[tptr]->width; -//print("%P\n", p); - - p = gins(ADATA, &nam, &nod1); - p->from.scale = types[TINT32]->width; - p->from.offset += types[tptr]->width+types[TINT32]->width; - text(); - - goto yes; - } - - if(nr->op == OCOMPMAP) { - goto yes; - } - - if(nr->type == T || - !eqtype(nl->type, nr->type)) - goto no; - - if(!stataddr(&nam, nl)) - goto no; - if(nam.class != PEXTERN) - goto no; - - switch(nr->op) { - default: - goto no; - - case OLITERAL: - goto lit; - } - -no: return 0; - -lit: - switch(nr->type->etype) { - default: - goto no; - - case TBOOL: - if(memcmp(nam.sym->name, "initdone·", 9) == 0) - goto no; - case TINT8: - case TUINT8: - case TINT16: - case TUINT16: - case TINT32: - case TUINT32: - case TINT: - case TUINT: - case TFLOAT32: - case TFLOAT64: - case TFLOAT: - data(); - p = gins(ADATA, &nam, nr); - p->from.scale = nr->type->width; - text(); - break; - - case TINT64: - case TUINT64: - data(); - split64(nr, &nlo, &nhi); - p = gins(ADATA, &nam, &nlo); - p->from.scale = 4; - p = gins(ADATA, &nam, &nhi); - p->from.scale = 4; - p->from.offset += 4; - splitclean(); - text(); - break; - - case TSTRING: - datastring(nr->val.u.sval->s, nr->val.u.sval->len, &a); - data(); - p = gins(ADATA, &nam, N); - p->from.scale = types[tptr]->width; - p->to = a; - p->to.index = p->to.type; - p->to.type = D_ADDR; -//print("%P\n", p); - - nodconst(&nod1, types[TINT32], nr->val.u.sval->len); - p = gins(ADATA, &nam, &nod1); - p->from.scale = types[TINT32]->width; - p->from.offset += types[tptr]->width; -//print("%P\n", p); - text(); - break; - } - -yes: -//dump("\ngen_as_init", nl); -//dump("", nr); -//print("%P\n", p); - return 1; } -- 2.48.1