1
0
mirror of https://github.com/golang/go synced 2024-11-26 07:47:57 -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:
Ian Lance Taylor 2021-03-23 15:24:27 -07:00
parent 769d4b68ef
commit 87a3ac5f53
2 changed files with 29 additions and 1 deletions

View File

@ -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,8 +218,10 @@ func ParseFlags() {
}
if Flag.Race || Flag.MSan {
// -race and -msan imply -d=checkptr for now.
if Debug.Checkptr == -1 { // if not set explicitly
Debug.Checkptr = 1
}
}
if Flag.CompilingRuntime && Flag.N != 0 {
log.Fatal("cannot disable optimizations while compiling runtime")
@ -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
View 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]))))
}