diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/compile.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/compile.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/ssa/compile.go b/src/cmd/compile/internal/ssa/compile.go index b9ec7eb6b7..5b461bac48 100644 --- a/src/cmd/compile/internal/ssa/compile.go +++ b/src/cmd/compile/internal/ssa/compile.go @@ -5,6 +5,7 @@ package ssa import ( + "cmd/internal/obj" "fmt" "log" "os" @@ -349,6 +350,8 @@ var passes = [...]pass{ {name: "writebarrier", fn: writebarrier, required: true}, // expand write barrier ops {name: "fuse", fn: fuse}, {name: "dse", fn: dse}, + {name: "insert resched checks", fn: insertLoopReschedChecks, + disabled: obj.Preemptibleloops_enabled == 0}, // insert resched checks in loops. {name: "tighten", fn: tighten}, // move values closer to their uses {name: "lower", fn: lower, required: true}, {name: "lowered cse", fn: cse}, @@ -378,7 +381,13 @@ type constraint struct { } var passOrder = [...]constraint{ - // prove reliese on common-subexpression elimination for maximum benefits. + // "insert resched checks" uses mem, better to clean out stores first. + {"dse", "insert resched checks"}, + // insert resched checks adds new blocks containing generic instructions + {"insert resched checks", "lower"}, + {"insert resched checks", "tighten"}, + + // prove relies on common-subexpression elimination for maximum benefits. {"generic cse", "prove"}, // deadcode after prove to eliminate all new dead blocks. {"prove", "generic deadcode"}, |