mirror of
https://github.com/golang/go
synced 2024-11-26 04:58:00 -07:00
cmd/compile: don't let -race override explicit -d=checkptr=0
Change-Id: Icfa204761045b72a8ea173fd55eddf1f0e58d819 Reviewed-on: https://go-review.googlesource.com/c/go/+/304253 Trust: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
769d4b68ef
commit
87a3ac5f53
@ -161,6 +161,8 @@ func ParseFlags() {
|
||||
Flag.WB = true
|
||||
Debug.InlFuncsWithClosures = 1
|
||||
|
||||
Debug.Checkptr = -1 // so we can tell whether it is set explicitly
|
||||
|
||||
Flag.Cfg.ImportMap = make(map[string]string)
|
||||
|
||||
objabi.AddVersionFlag() // -V
|
||||
@ -216,7 +218,9 @@ func ParseFlags() {
|
||||
}
|
||||
if Flag.Race || Flag.MSan {
|
||||
// -race and -msan imply -d=checkptr for now.
|
||||
Debug.Checkptr = 1
|
||||
if Debug.Checkptr == -1 { // if not set explicitly
|
||||
Debug.Checkptr = 1
|
||||
}
|
||||
}
|
||||
|
||||
if Flag.CompilingRuntime && Flag.N != 0 {
|
||||
@ -237,6 +241,10 @@ func ParseFlags() {
|
||||
Debug.Libfuzzer = 0
|
||||
}
|
||||
|
||||
if Debug.Checkptr == -1 { // if not set explicitly
|
||||
Debug.Checkptr = 0
|
||||
}
|
||||
|
||||
// set via a -d flag
|
||||
Ctxt.Debugpcln = Debug.PCTab
|
||||
}
|
||||
|
20
test/fixedbugs/bug513.go
Normal file
20
test/fixedbugs/bug513.go
Normal file
@ -0,0 +1,20 @@
|
||||
// run -race -gcflags=all=-d=checkptr=0
|
||||
// +build linux,amd64 linux,ppc64le darwin,amd64 freebsd,amd64 netbsd,amd64 windows,amd64
|
||||
|
||||
// Copyright 2021 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.
|
||||
|
||||
// Although -race turns on -d=checkptr, the explicit -d=checkptr=0
|
||||
// should override it.
|
||||
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
var v1 = new([2]int16)
|
||||
var v2 *[3]int64
|
||||
|
||||
func main() {
|
||||
v2 = (*[3]int64)(unsafe.Pointer(uintptr(unsafe.Pointer(&(*v1)[0]))))
|
||||
}
|
Loading…
Reference in New Issue
Block a user