]> Cypherpunks repositories - gostls13.git/commitdiff
make 5g, 8g build again by disabling init code.
authorRuss Cox <rsc@golang.org>
Mon, 14 Sep 2009 21:27:19 +0000 (14:27 -0700)
committerRuss Cox <rsc@golang.org>
Mon, 14 Sep 2009 21:27:19 +0000 (14:27 -0700)
R=ken
OCL=34604
CL=34604

src/cmd/5g/cgen.c
src/cmd/5g/gg.h
src/cmd/5g/ggen.c
src/cmd/8g/cgen.c
src/cmd/8g/ggen.c

index b99350c31c183fa70fbdb01aa82a9bd9ad7c214b..d9876adf98cc7753bdc81bfe237e727792c39053 100644 (file)
@@ -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");
index ded072f34c9af84218208c4d722e70d43282ee4e..34b330e55af1eaef2bfb44f933862939a7c62969 100644 (file)
@@ -82,7 +82,6 @@ void  genconv(Type*, Type*);
 void   allocparams(void);
 void   checklabels();
 void   ginscall(Node*, int);
-int    gen_as_init(Node*, Node*);
 
 /*
  * cgen
index a3306b44f75e6d6bb980c221120c46b4b83d045d..abd44e51b8411847ca45d4d120e04616b19c6937 100644 (file)
@@ -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;
 }
index 94627f50be47ee5c6c60975b75f0e863f657078d..6e22c5489d4906c7998f5557f1103d5fa79c5aa5 100644 (file)
@@ -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);
index 7c4dfdbc28812c11357d9899bb828d459ce7303f..c6abe174e02bb15fccad0bcb2eba87fb490ffbbb 100644 (file)
@@ -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;
 }