cmd/compile: handle copy in escape analysis

Somehow we missed this!
Fixes #11387.

Change-Id: Ida08fe52eff7da2ef7765b4cf35a39a301420c43
Reviewed-on: https://go-review.googlesource.com/11460
Reviewed-by: David Chase <drchase@google.com>
diff --git a/test/escape2.go b/test/escape2.go
index c048f1b..46cfde4 100644
--- a/test/escape2.go
+++ b/test/escape2.go
@@ -858,8 +858,8 @@
 
 var y []*int
 
-// does not leak x
-func foo104(x []*int) { // ERROR "foo104 x does not escape$"
+// does not leak x but does leak content
+func foo104(x []*int) { // ERROR "leaking param content: x"
 	copy(y, x)
 }
 
@@ -1820,3 +1820,11 @@
 	}
 	_ = f
 }
+
+func issue11387(x int) func() int {
+	f := func() int { return x }    // ERROR "func literal escapes to heap"
+	slice1 := []func() int{f}       // ERROR "\[\].* does not escape"
+	slice2 := make([]func() int, 1) // ERROR "make\(.*\) does not escape"
+	copy(slice2, slice1)
+	return slice2[0]
+}