summaryrefslogtreecommitdiff
path: root/src/cmd/5g/gsubr.c
diff options
context:
space:
mode:
authorKai Backman <kaib@golang.org>2009-10-19 12:44:08 -0700
committerKai Backman <kaib@golang.org>2009-10-19 12:44:08 -0700
commitc7b5ced4a3ba072cdf9faf771c1f513eba0906f8 (patch)
treecfc4c556d3c7fdefd445dc76b92bf09b78c79c91 /src/cmd/5g/gsubr.c
parentcab57da1ba0c179db389cc14ddf690911d574bf5 (diff)
downloadgolang-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.c14
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);
}
}