diff options
author | Matthew Dempsky <mdempsky@google.com> | 2021-08-19 15:53:13 -0700 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2021-08-21 00:24:02 +0000 |
commit | c9912780ab3ecea3c685bfc8bec229c0d2b09317 (patch) | |
tree | cbd4c6664a7398e859ce687cd233f82c3a39fa0b /test | |
parent | 97d17dc02398730822abba75a3d3ae26c0f3c0fd (diff) | |
download | go-c9912780ab3ecea3c685bfc8bec229c0d2b09317.tar.gz go-c9912780ab3ecea3c685bfc8bec229c0d2b09317.zip |
cmd/compile: enable -G=3 by default
This CL changes cmd/compile's -G flag's default from 0 to 3, which
enables use of the new types2 type checker and support for type
parameters. The old type checker is still available with
-gcflags=all=-G=0.
The CL also updates the regress test harness to account for the change
in default behavior (e.g., to expect known types2 changes/failures).
However, the -G=0 mode is still being tested for now.
Copy of CL 340914 by danscales@, minus the cmd/internal/objabi.AbsFile
change (handled instead by CL 343731) and rebased to master branch.
Updates #43651.
Change-Id: I1f62d6c0a3ff245e15c5c0e8f3d922129fdd4f29
Reviewed-on: https://go-review.googlesource.com/c/go/+/343732
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/run.go | 29 | ||||
-rw-r--r-- | test/typeparam/smoketest.go | 2 |
2 files changed, 17 insertions, 14 deletions
diff --git a/test/run.go b/test/run.go index f5971d2d15..22e94b767c 100644 --- a/test/run.go +++ b/test/run.go @@ -32,6 +32,10 @@ import ( "unicode" ) +// CompilerDefaultGLevel is the -G level used by default when not overridden by a +// command-line flag +const CompilerDefaultGLevel = 3 + var ( verbose = flag.Bool("v", false, "verbose. if set, parallelism is set to 1.") keep = flag.Bool("k", false, "keep. keep temporary directory.") @@ -340,13 +344,18 @@ type test struct { } // initExpectFail initializes t.expectFail based on the build+test -// configuration. It should only be called for tests known to use -// types2. -func (t *test) initExpectFail() { +// configuration. +func (t *test) initExpectFail(hasGFlag bool) { if *force { return } + if t.glevel == 0 && !hasGFlag && !unifiedEnabled { + // tests should always pass when run w/o types2 (i.e., using the + // legacy typechecker, option -G=0). + return + } + failureSets := []map[string]bool{types2Failures} // Note: gccgo supports more 32-bit architectures than this, but @@ -581,14 +590,14 @@ func init() { checkShouldTest() } // over and over. func (t *test) goGcflags() string { flags := os.Getenv("GO_GCFLAGS") - if t.glevel != 0 { + if t.glevel != CompilerDefaultGLevel { flags = fmt.Sprintf("%s -G=%v", flags, t.glevel) } return "-gcflags=all=" + flags } func (t *test) goGcflagsIsEmpty() bool { - return "" == os.Getenv("GO_GCFLAGS") && t.glevel == 0 + return "" == os.Getenv("GO_GCFLAGS") && t.glevel == CompilerDefaultGLevel } var errTimeout = errors.New("command exceeded time limit") @@ -750,7 +759,7 @@ func (t *test) run() { } } - if hasGFlag && t.glevel != 0 { + if hasGFlag && t.glevel != CompilerDefaultGLevel { // test provides explicit -G flag already; don't run again if *verbose { fmt.Printf("excl\t%s\n", t.goFileName()) @@ -758,13 +767,7 @@ func (t *test) run() { return false } - if t.glevel == 0 && !hasGFlag && !unifiedEnabled { - // tests should always pass when run w/o types2 (i.e., using the - // legacy typechecker). - return true - } - - t.initExpectFail() + t.initExpectFail(hasGFlag) switch tool { case Build, Run: diff --git a/test/typeparam/smoketest.go b/test/typeparam/smoketest.go index 5243dc5c3c..f32b40062d 100644 --- a/test/typeparam/smoketest.go +++ b/test/typeparam/smoketest.go @@ -1,4 +1,4 @@ -// compile -G +// compile -G=1 // Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style |