diff options
author | Luuk van Dijk <lvd@golang.org> | 2012-10-22 10:09:52 +0200 |
---|---|---|
committer | Luuk van Dijk <lvd@golang.org> | 2012-10-22 10:09:52 +0200 |
commit | f89c2ba7c656f2fdc86d9003ed3e201dfe1e3a6c (patch) | |
tree | 8ef8e47d7a8f8b2eb83501a4a3852c481593d997 /src/cmd/gc/closure.c | |
parent | 727851eba522af85258bf76c9a5c0e3747ab29da (diff) | |
download | go-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.c | 7 |
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)); } } |