summaryrefslogtreecommitdiff
path: root/src/cmd/gc/closure.c
diff options
context:
space:
mode:
authorLuuk van Dijk <lvd@golang.org>2012-10-22 10:09:52 +0200
committerLuuk van Dijk <lvd@golang.org>2012-10-22 10:09:52 +0200
commitf89c2ba7c656f2fdc86d9003ed3e201dfe1e3a6c (patch)
tree8ef8e47d7a8f8b2eb83501a4a3852c481593d997 /src/cmd/gc/closure.c
parent727851eba522af85258bf76c9a5c0e3747ab29da (diff)
downloadgo-f89c2ba7c656f2fdc86d9003ed3e201dfe1e3a6c.tar.gz
cmd/gc: track parameter flow, step 0: synthesize name nodes for anonymous PPARAMOUTs without breaking anything.
further work on parameter flow tracking for escape analysis depends on this. R=rsc CC=golang-dev http://codereview.appspot.com/6600044
Diffstat (limited to 'src/cmd/gc/closure.c')
-rw-r--r--src/cmd/gc/closure.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cmd/gc/closure.c b/src/cmd/gc/closure.c
index cc44d7f6b..2043ab0ed 100644
--- a/src/cmd/gc/closure.c
+++ b/src/cmd/gc/closure.c
@@ -13,7 +13,7 @@
void
closurehdr(Node *ntype)
{
- Node *n, *name, *a;
+ Node *n, *name, *a, *orig;
NodeList *l;
n = nod(OCLOSURE, N, N);
@@ -43,8 +43,11 @@ closurehdr(Node *ntype)
}
for(l=n->rlist; l; l=l->next) {
name = l->n->left;
- if(name)
+ if(name) {
+ orig = name->orig; // preserve the meaning of orig == N (anonymous PPARAMOUT)
name = newname(name->sym);
+ name->orig = orig;
+ }
ntype->rlist = list(ntype->rlist, nod(ODCLFIELD, name, l->n->right));
}
}