Files
gcc-reflection/gcc/testsuite/go.dg/mapstring.go
Cherry Zhang 8743680541 compiler: avoid copy for string([]byte) conversion used in map keys
If a string([]byte) conversion is used immediately as a key for a
    map read, we don't need to copy the backing store of the byte
    slice, as mapaccess does not keep a reference to it.
    
    The gc compiler does more than this: it also avoids the copy if
    the map key is a composite literal that contains the conversion
    as a field, like, T{ ... { ..., string(b), ... }, ... }. For now,
    we just optimize the simple case, which is probably most common.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176197

	* go.dg/mapstring.go: New test.

From-SVN: r271044
2019-05-09 21:24:56 +00:00

12 lines
293 B
Go

// { dg-do compile }
// { dg-options "-fgo-debug-optimization" }
package p
func F(m map[string]int, a, b []byte) int {
x := m[string(a)] // { dg-error "no copy string\\(\\\[\\\]byte\\)" }
y, ok := m[string(b)] // { dg-error "no copy string\\(\\\[\\\]byte\\)" }
_ = ok
return x + y
}