Commit 39ad208c authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

test: add test to verify that string copies don't get optimized away

Fixes #25834

Change-Id: I33e58dabfd04b84dfee1a9a3796796b5d19862e7
Reviewed-on: https://go-review.googlesource.com/118295
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent 48987baa
// run
// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Test that string([]byte(string)) makes a copy and doesn't reduce to
// nothing. (Issue 25834)
package main
import (
"reflect"
"unsafe"
)
func main() {
var (
buf = make([]byte, 2<<10)
large = string(buf)
sub = large[10:12]
subcopy = string([]byte(sub))
subh = *(*reflect.StringHeader)(unsafe.Pointer(&sub))
subcopyh = *(*reflect.StringHeader)(unsafe.Pointer(&subcopy))
)
if subh.Data == subcopyh.Data {
panic("sub and subcopy have the same underlying array")
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment