aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Chase <drchase@google.com>2018-07-19 15:04:14 -0400
committerDavid Chase <drchase@google.com>2018-07-19 19:51:00 +0000
commit0b3d39c70018c6f149129abb3b05ce8ccffcf292 (patch)
tree513ed22e9f434e3407877dba5fe468438bf43f1c
parentad705baafd52089cad35791755e4b80212727a82 (diff)
downloadgo-0b3d39c70018c6f149129abb3b05ce8ccffcf292.tar.gz
go-0b3d39c70018c6f149129abb3b05ce8ccffcf292.zip
cmd/compile: don't run gc/ssa_test/TestGenFlowGraph in short mode
The test runs far too long for -short mode (4 seconds). Also removed useless test of now-disconnected knob (GO_SSA_PHI_LOC_CUTOFF), which cuts 4 seconds to 2 seconds (which is still too long), and finished removing the disconnected knob. Updates #26469. Change-Id: I6c594227c4a5aaffee46832049bdbbf570d86e60 Reviewed-on: https://go-review.googlesource.com/125075 Run-TryBot: David Chase <drchase@google.com> Reviewed-by: Keith Randall <khr@golang.org>
-rw-r--r--src/cmd/compile/internal/gc/ssa_test.go7
-rw-r--r--src/cmd/compile/internal/ssa/config.go72
2 files changed, 29 insertions, 50 deletions
diff --git a/src/cmd/compile/internal/gc/ssa_test.go b/src/cmd/compile/internal/gc/ssa_test.go
index 2aa923f9f4..73110ea65a 100644
--- a/src/cmd/compile/internal/gc/ssa_test.go
+++ b/src/cmd/compile/internal/gc/ssa_test.go
@@ -11,7 +11,6 @@ import (
"os"
"os/exec"
"path/filepath"
- "runtime"
"strings"
"testing"
)
@@ -99,10 +98,10 @@ func runGenTest(t *testing.T, filename, tmpname string, ev ...string) {
}
func TestGenFlowGraph(t *testing.T) {
- runGenTest(t, "flowgraph_generator1.go", "ssa_fg_tmp1")
- if runtime.GOOS != "windows" {
- runGenTest(t, "flowgraph_generator1.go", "ssa_fg_tmp2", "GO_SSA_PHI_LOC_CUTOFF=0")
+ if testing.Short() {
+ t.Skip("not run in short mode.")
}
+ runGenTest(t, "flowgraph_generator1.go", "ssa_fg_tmp1")
}
// TestShortCircuit tests OANDAND and OOROR expressions and short circuiting.
diff --git a/src/cmd/compile/internal/ssa/config.go b/src/cmd/compile/internal/ssa/config.go
index 28498629b6..af8cccff90 100644
--- a/src/cmd/compile/internal/ssa/config.go
+++ b/src/cmd/compile/internal/ssa/config.go
@@ -9,40 +9,37 @@ import (
"cmd/internal/obj"
"cmd/internal/objabi"
"cmd/internal/src"
- "os"
- "strconv"
)
// A Config holds readonly compilation information.
// It is created once, early during compilation,
// and shared across all compilations.
type Config struct {
- arch string // "amd64", etc.
- PtrSize int64 // 4 or 8; copy of cmd/internal/sys.Arch.PtrSize
- RegSize int64 // 4 or 8; copy of cmd/internal/sys.Arch.RegSize
- Types Types
- lowerBlock blockRewriter // lowering function
- lowerValue valueRewriter // lowering function
- registers []Register // machine registers
- gpRegMask regMask // general purpose integer register mask
- fpRegMask regMask // floating point register mask
- specialRegMask regMask // special register mask
- GCRegMap []*Register // garbage collector register map, by GC register index
- FPReg int8 // register number of frame pointer, -1 if not used
- LinkReg int8 // register number of link register if it is a general purpose register, -1 if not used
- hasGReg bool // has hardware g register
- ctxt *obj.Link // Generic arch information
- optimize bool // Do optimization
- noDuffDevice bool // Don't use Duff's device
- useSSE bool // Use SSE for non-float operations
- useAvg bool // Use optimizations that need Avg* operations
- useHmul bool // Use optimizations that need Hmul* operations
- nacl bool // GOOS=nacl
- use387 bool // GO386=387
- SoftFloat bool //
- NeedsFpScratch bool // No direct move between GP and FP register sets
- BigEndian bool //
- sparsePhiCutoff uint64 // Sparse phi location algorithm used above this #blocks*#variables score
+ arch string // "amd64", etc.
+ PtrSize int64 // 4 or 8; copy of cmd/internal/sys.Arch.PtrSize
+ RegSize int64 // 4 or 8; copy of cmd/internal/sys.Arch.RegSize
+ Types Types
+ lowerBlock blockRewriter // lowering function
+ lowerValue valueRewriter // lowering function
+ registers []Register // machine registers
+ gpRegMask regMask // general purpose integer register mask
+ fpRegMask regMask // floating point register mask
+ specialRegMask regMask // special register mask
+ GCRegMap []*Register // garbage collector register map, by GC register index
+ FPReg int8 // register number of frame pointer, -1 if not used
+ LinkReg int8 // register number of link register if it is a general purpose register, -1 if not used
+ hasGReg bool // has hardware g register
+ ctxt *obj.Link // Generic arch information
+ optimize bool // Do optimization
+ noDuffDevice bool // Don't use Duff's device
+ useSSE bool // Use SSE for non-float operations
+ useAvg bool // Use optimizations that need Avg* operations
+ useHmul bool // Use optimizations that need Hmul* operations
+ nacl bool // GOOS=nacl
+ use387 bool // GO386=387
+ SoftFloat bool //
+ NeedsFpScratch bool // No direct move between GP and FP register sets
+ BigEndian bool //
}
type (
@@ -360,22 +357,6 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize bool) *Config
opcodeTable[Op386LoweredWB].reg.clobbers |= 1 << 3 // BX
}
- // cutoff is compared with product of numblocks and numvalues,
- // if product is smaller than cutoff, use old non-sparse method.
- // cutoff == 0 implies all sparse.
- // cutoff == -1 implies none sparse.
- // Good cutoff values seem to be O(million) depending on constant factor cost of sparse.
- // TODO: get this from a flag, not an environment variable
- c.sparsePhiCutoff = 2500000 // 0 for testing. // 2500000 determined with crude experiments w/ make.bash
- ev := os.Getenv("GO_SSA_PHI_LOC_CUTOFF")
- if ev != "" {
- v, err := strconv.ParseInt(ev, 10, 64)
- if err != nil {
- ctxt.Diag("Environment variable GO_SSA_PHI_LOC_CUTOFF (value '%s') did not parse as a number", ev)
- }
- c.sparsePhiCutoff = uint64(v) // convert -1 to maxint, for never use sparse
- }
-
// Create the GC register map index.
// TODO: This is only used for debug printing. Maybe export config.registers?
gcRegMapSize := int16(0)
@@ -399,5 +380,4 @@ func (c *Config) Set387(b bool) {
c.use387 = b
}
-func (c *Config) SparsePhiCutoff() uint64 { return c.sparsePhiCutoff }
-func (c *Config) Ctxt() *obj.Link { return c.ctxt }
+func (c *Config) Ctxt() *obj.Link { return c.ctxt }