]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: clarify division bounds check optimization
authorJosh Bleecher Snyder <josharian@gmail.com>
Fri, 24 Jan 2020 06:18:30 +0000 (22:18 -0800)
committerJosh Bleecher Snyder <josharian@gmail.com>
Fri, 21 Feb 2020 17:28:10 +0000 (17:28 +0000)
The name of the function should mention division.
Eliminate double negatives from the comment describing it.

Change-Id: Icef1a5139b3a91b86acb930af97938f5160f7342
Reviewed-on: https://go-review.googlesource.com/c/go/+/217001
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
src/cmd/compile/internal/amd64/ssa.go
src/cmd/compile/internal/ssa/prove.go
src/cmd/compile/internal/ssa/rewrite.go
src/cmd/compile/internal/x86/ssa.go

index 9ee322b389d52ac00055eb2c2495fec0bc90f84f..b6c1039d9e9c94e2910776de37af17c5c61a803f 100644 (file)
@@ -257,7 +257,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
 
                // CPU faults upon signed overflow, which occurs when the most
                // negative int is divided by -1. Handle divide by -1 as a special case.
-               if ssa.NeedsFixUp(v) {
+               if ssa.DivisionNeedsFixUp(v) {
                        var c *obj.Prog
                        switch v.Op {
                        case ssa.OpAMD64DIVQ:
index 774fa94dbc28604ba98793dc103ecc3f621d046e..01825579d9a07049322aa7c82b70e427098bedcd 100644 (file)
@@ -1243,9 +1243,11 @@ func simplifyBlock(sdom SparseTree, ft *factsTable, b *Block) {
                        divdLim, divdLimok := ft.limits[divd.ID]
                        if (divrLimok && (divrLim.max < -1 || divrLim.min > -1)) ||
                                (divdLimok && divdLim.min > mostNegativeDividend[v.Op]) {
-                               v.AuxInt = 1 // see NeedsFixUp in genericOps - v.AuxInt = 0 means we have not proved
-                               // that the divisor is not -1 and the dividend is not the most negative,
-                               // so we need to add fix-up code.
+                               // See DivisionNeedsFixUp in rewrite.go.
+                               // v.AuxInt = 1 means we have proved both that the divisor is not -1
+                               // and that the dividend is not the most negative integer,
+                               // so we do not need to add fix-up code.
+                               v.AuxInt = 1
                                if b.Func.pass.debug > 0 {
                                        b.Func.Warnl(v.Pos, "Proved %v does not need fix-up", v.Op)
                                }
index 539941001dd591cc95d3b5f43327d9ca9c15693a..ef24dad7471cc31379ea7722446178a0dcb2efdc 100644 (file)
@@ -480,8 +480,8 @@ func extend32Fto64F(f float32) float64 {
        return math.Float64frombits(r)
 }
 
-// NeedsFixUp reports whether the division needs fix-up code.
-func NeedsFixUp(v *Value) bool {
+// DivisionNeedsFixUp reports whether the division needs fix-up code.
+func DivisionNeedsFixUp(v *Value) bool {
        return v.AuxInt == 0
 }
 
index aa68e9163ae56b427559c28df9edafa56806455d..0c7e5bdb97c03163afad9f967c91de5329f56da7 100644 (file)
@@ -199,7 +199,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
                if v.Op == ssa.Op386DIVL || v.Op == ssa.Op386DIVW ||
                        v.Op == ssa.Op386MODL || v.Op == ssa.Op386MODW {
 
-                       if ssa.NeedsFixUp(v) {
+                       if ssa.DivisionNeedsFixUp(v) {
                                var c *obj.Prog
                                switch v.Op {
                                case ssa.Op386DIVL, ssa.Op386MODL: