aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/gc
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-05-12 14:45:05 -0400
committerRuss Cox <rsc@golang.org>2014-05-12 14:45:05 -0400
commitf078711b412e9949d242e2bb54fc26d759232f5f (patch)
treecc2d67fd0e2165ee786c308d2be5d2fd31c6fbe9 /src/cmd/gc
parent7e8bc474dbb9fdeda1a3e57121519084f2d673d8 (diff)
downloadgo-f078711b412e9949d242e2bb54fc26d759232f5f.tar.xz
cmd/gc: fix escape analysis for slice of array
Fixes #7931. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/100390044
Diffstat (limited to 'src/cmd/gc')
-rw-r--r--src/cmd/gc/esc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cmd/gc/esc.c b/src/cmd/gc/esc.c
index 028163abbf..4091682485 100644
--- a/src/cmd/gc/esc.c
+++ b/src/cmd/gc/esc.c
@@ -767,8 +767,8 @@ escassign(EscState *e, Node *dst, Node *src)
case ODOTTYPE:
case ODOTTYPE2:
case OSLICE:
- case OSLICEARR:
case OSLICE3:
+ case OSLICEARR:
case OSLICE3ARR:
// Conversions, field access, slice all preserve the input value.
escassign(e, dst, src->left);
@@ -1155,6 +1155,10 @@ escwalk(EscState *e, int level, Node *dst, Node *src)
break;
case ODOT:
+ case OSLICE:
+ case OSLICEARR:
+ case OSLICE3:
+ case OSLICE3ARR:
escwalk(e, level, dst, src->left);
break;
@@ -1164,7 +1168,6 @@ escwalk(EscState *e, int level, Node *dst, Node *src)
break;
}
// fall through
- case OSLICE:
case ODOTPTR:
case OINDEXMAP:
case OIND: