]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: don't run gc/ssa_test/TestGenFlowGraph in short mode
authorDavid Chase <drchase@google.com>
Thu, 19 Jul 2018 19:04:14 +0000 (15:04 -0400)
committerDavid Chase <drchase@google.com>
Thu, 19 Jul 2018 19:51:00 +0000 (19:51 +0000)
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>
src/cmd/compile/internal/gc/ssa_test.go
src/cmd/compile/internal/ssa/config.go

index 2aa923f9f4ec827398389d40e6f344a679510c55..73110ea65a7d2d3891ac313ced0e4ab4c133ae0d 100644 (file)
@@ -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.
index 28498629b60d521d2721ce2a7f1a2abf4fe26777..af8cccff90bb1c5f239fb8ae2f0021465e15b69c 100644 (file)
@@ -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 }