diff options
author | Kai Backman <kaib@golang.org> | 2009-10-19 12:44:08 -0700 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-10-19 12:44:08 -0700 |
commit | c7b5ced4a3ba072cdf9faf771c1f513eba0906f8 (patch) | |
tree | cfc4c556d3c7fdefd445dc76b92bf09b78c79c91 /src/cmd/5g/gsubr.c | |
parent | cab57da1ba0c179db389cc14ddf690911d574bf5 (diff) | |
download | golang-c7b5ced4a3ba072cdf9faf771c1f513eba0906f8.tar.gz |
function literals
go/test: passes 86% (297/343)
R=rsc
APPROVED=rsc
DELTA=14 (10 added, 1 deleted, 3 changed)
OCL=35881
CL=35884
Diffstat (limited to 'src/cmd/5g/gsubr.c')
-rw-r--r-- | src/cmd/5g/gsubr.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c index ae85798b6..4a4c21ba9 100644 --- a/src/cmd/5g/gsubr.c +++ b/src/cmd/5g/gsubr.c @@ -189,7 +189,7 @@ isfat(Type *t) void afunclit(Addr *a) { - if(a->type == D_ADDR && a->name == D_EXTERN || a->type == D_REG) { + if(a->type == D_CONST && a->name == D_EXTERN || a->type == D_REG) { a->type = D_OREG; } } @@ -1099,6 +1099,7 @@ naddr(Node *n, Addr *a) break; case PFUNC: a->name = D_EXTERN; + a->type = D_CONST; break; } break; @@ -1147,13 +1148,18 @@ naddr(Node *n, Addr *a) case OADDR: naddr(n->left, a); - if(a->type == D_OREG) { + switch(a->type) { + case D_OREG: a->type = D_CONST; break; - } else if (a->type == D_REG) { + + case D_REG: + case D_CONST: break; + + default: + fatal("naddr: OADDR %d\n", a->type); } - fatal("naddr: OADDR %d\n", a->type); } } |