From: Josh Bleecher Snyder Date: Fri, 24 Apr 2020 05:31:32 +0000 (-0700) Subject: cmd/compile: convert pointer and address comparisons to typed aux X-Git-Tag: go1.15beta1~388 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1c5453510c9aee1b0d6a51f7e5411a9718fc9deb;p=gostls13.git cmd/compile: convert pointer and address comparisons to typed aux Passes toolstash-check. Change-Id: Id4c4d341e5733673eb8a899e881d70b193f76580 Reviewed-on: https://go-review.googlesource.com/c/go/+/229687 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- diff --git a/src/cmd/compile/internal/ssa/gen/generic.rules b/src/cmd/compile/internal/ssa/gen/generic.rules index fdd2154c93..346be30b57 100644 --- a/src/cmd/compile/internal/ssa/gen/generic.rules +++ b/src/cmd/compile/internal/ssa/gen/generic.rules @@ -1950,49 +1950,49 @@ => (Invalid) // Evaluate constant address comparisons. -(EqPtr x x) -> (ConstBool [1]) -(NeqPtr x x) -> (ConstBool [0]) -(EqPtr (Addr {a} _) (Addr {b} _)) -> (ConstBool [b2i(a == b)]) -(EqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) -> (ConstBool [b2i(a == b && o == 0)]) -(EqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) -> (ConstBool [b2i(a == b && o1 == o2)]) -(NeqPtr (Addr {a} _) (Addr {b} _)) -> (ConstBool [b2i(a != b)]) -(NeqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) -> (ConstBool [b2i(a != b || o != 0)]) -(NeqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) -> (ConstBool [b2i(a != b || o1 != o2)]) -(EqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) -> (ConstBool [b2i(a == b)]) -(EqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) -> (ConstBool [b2i(a == b && o == 0)]) -(EqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) -> (ConstBool [b2i(a == b && o1 == o2)]) -(NeqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) -> (ConstBool [b2i(a != b)]) -(NeqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) -> (ConstBool [b2i(a != b || o != 0)]) -(NeqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) -> (ConstBool [b2i(a != b || o1 != o2)]) -(EqPtr (OffPtr [o1] p1) p2) && isSamePtr(p1, p2) -> (ConstBool [b2i(o1 == 0)]) -(NeqPtr (OffPtr [o1] p1) p2) && isSamePtr(p1, p2) -> (ConstBool [b2i(o1 != 0)]) -(EqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) && isSamePtr(p1, p2) -> (ConstBool [b2i(o1 == o2)]) -(NeqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) && isSamePtr(p1, p2) -> (ConstBool [b2i(o1 != o2)]) -(EqPtr (Const(32|64) [c]) (Const(32|64) [d])) -> (ConstBool [b2i(c == d)]) -(NeqPtr (Const(32|64) [c]) (Const(32|64) [d])) -> (ConstBool [b2i(c != d)]) - -(EqPtr (LocalAddr _ _) (Addr _)) -> (ConstBool [0]) -(EqPtr (OffPtr (LocalAddr _ _)) (Addr _)) -> (ConstBool [0]) -(EqPtr (LocalAddr _ _) (OffPtr (Addr _))) -> (ConstBool [0]) -(EqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) -> (ConstBool [0]) -(NeqPtr (LocalAddr _ _) (Addr _)) -> (ConstBool [1]) -(NeqPtr (OffPtr (LocalAddr _ _)) (Addr _)) -> (ConstBool [1]) -(NeqPtr (LocalAddr _ _) (OffPtr (Addr _))) -> (ConstBool [1]) -(NeqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) -> (ConstBool [1]) +(EqPtr x x) => (ConstBool [true]) +(NeqPtr x x) => (ConstBool [false]) +(EqPtr (Addr {a} _) (Addr {b} _)) => (ConstBool [a == b]) +(EqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) => (ConstBool [a == b && o == 0]) +(EqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) => (ConstBool [a == b && o1 == o2]) +(NeqPtr (Addr {a} _) (Addr {b} _)) => (ConstBool [a != b]) +(NeqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) => (ConstBool [a != b || o != 0]) +(NeqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) => (ConstBool [a != b || o1 != o2]) +(EqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) => (ConstBool [a == b]) +(EqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) => (ConstBool [a == b && o == 0]) +(EqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) => (ConstBool [a == b && o1 == o2]) +(NeqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) => (ConstBool [a != b]) +(NeqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) => (ConstBool [a != b || o != 0]) +(NeqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) => (ConstBool [a != b || o1 != o2]) +(EqPtr (OffPtr [o1] p1) p2) && isSamePtr(p1, p2) => (ConstBool [o1 == 0]) +(NeqPtr (OffPtr [o1] p1) p2) && isSamePtr(p1, p2) => (ConstBool [o1 != 0]) +(EqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) && isSamePtr(p1, p2) => (ConstBool [o1 == o2]) +(NeqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) && isSamePtr(p1, p2) => (ConstBool [o1 != o2]) +(EqPtr (Const(32|64) [c]) (Const(32|64) [d])) => (ConstBool [c == d]) +(NeqPtr (Const(32|64) [c]) (Const(32|64) [d])) => (ConstBool [c != d]) + +(EqPtr (LocalAddr _ _) (Addr _)) => (ConstBool [false]) +(EqPtr (OffPtr (LocalAddr _ _)) (Addr _)) => (ConstBool [false]) +(EqPtr (LocalAddr _ _) (OffPtr (Addr _))) => (ConstBool [false]) +(EqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) => (ConstBool [false]) +(NeqPtr (LocalAddr _ _) (Addr _)) => (ConstBool [true]) +(NeqPtr (OffPtr (LocalAddr _ _)) (Addr _)) => (ConstBool [true]) +(NeqPtr (LocalAddr _ _) (OffPtr (Addr _))) => (ConstBool [true]) +(NeqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) => (ConstBool [true]) // Simplify address comparisons. -(EqPtr (AddPtr p1 o1) p2) && isSamePtr(p1, p2) -> (Not (IsNonNil o1)) -(NeqPtr (AddPtr p1 o1) p2) && isSamePtr(p1, p2) -> (IsNonNil o1) -(EqPtr (Const(32|64) [0]) p) -> (Not (IsNonNil p)) -(NeqPtr (Const(32|64) [0]) p) -> (IsNonNil p) -(EqPtr (ConstNil) p) -> (Not (IsNonNil p)) -(NeqPtr (ConstNil) p) -> (IsNonNil p) +(EqPtr (AddPtr p1 o1) p2) && isSamePtr(p1, p2) => (Not (IsNonNil o1)) +(NeqPtr (AddPtr p1 o1) p2) && isSamePtr(p1, p2) => (IsNonNil o1) +(EqPtr (Const(32|64) [0]) p) => (Not (IsNonNil p)) +(NeqPtr (Const(32|64) [0]) p) => (IsNonNil p) +(EqPtr (ConstNil) p) => (Not (IsNonNil p)) +(NeqPtr (ConstNil) p) => (IsNonNil p) // Evaluate constant user nil checks. -(IsNonNil (ConstNil)) -> (ConstBool [0]) -(IsNonNil (Const(32|64) [c])) -> (ConstBool [b2i(c != 0)]) -(IsNonNil (Addr _)) -> (ConstBool [1]) -(IsNonNil (LocalAddr _ _)) -> (ConstBool [1]) +(IsNonNil (ConstNil)) => (ConstBool [false]) +(IsNonNil (Const(32|64) [c])) => (ConstBool [c != 0]) +(IsNonNil (Addr _)) => (ConstBool [true]) +(IsNonNil (LocalAddr _ _)) => (ConstBool [true]) // Inline small or disjoint runtime.memmove calls with constant length. // See the comment in op Move in genericOps.go for discussion of the type. diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go index 8afb743549..4fad5bffae 100644 --- a/src/cmd/compile/internal/ssa/rewritegeneric.go +++ b/src/cmd/compile/internal/ssa/rewritegeneric.go @@ -8276,249 +8276,249 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (EqPtr x x) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { x := v_0 if x != v_1 { break } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } // match: (EqPtr (Addr {a} _) (Addr {b} _)) - // result: (ConstBool [b2i(a == b)]) + // result: (ConstBool [a == b]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpAddr { continue } - b := v_1.Aux + b := auxToSym(v_1.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b) + v.AuxInt = boolToAuxInt(a == b) return true } break } // match: (EqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) - // result: (ConstBool [b2i(a == b && o == 0)]) + // result: (ConstBool [a == b && o == 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpOffPtr { continue } - o := v_1.AuxInt + o := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b && o == 0) + v.AuxInt = boolToAuxInt(a == b && o == 0) return true } break } // match: (EqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) - // result: (ConstBool [b2i(a == b && o1 == o2)]) + // result: (ConstBool [a == b && o1 == o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) v_0_0 := v_0.Args[0] if v_0_0.Op != OpAddr { continue } - a := v_0_0.Aux + a := auxToSym(v_0_0.Aux) if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b && o1 == o2) + v.AuxInt = boolToAuxInt(a == b && o1 == o2) return true } break } // match: (EqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) - // result: (ConstBool [b2i(a == b)]) + // result: (ConstBool [a == b]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpLocalAddr { continue } - b := v_1.Aux + b := auxToSym(v_1.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b) + v.AuxInt = boolToAuxInt(a == b) return true } break } // match: (EqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) - // result: (ConstBool [b2i(a == b && o == 0)]) + // result: (ConstBool [a == b && o == 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpOffPtr { continue } - o := v_1.AuxInt + o := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpLocalAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b && o == 0) + v.AuxInt = boolToAuxInt(a == b && o == 0) return true } break } // match: (EqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) - // result: (ConstBool [b2i(a == b && o1 == o2)]) + // result: (ConstBool [a == b && o1 == o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) v_0_0 := v_0.Args[0] if v_0_0.Op != OpLocalAddr { continue } - a := v_0_0.Aux + a := auxToSym(v_0_0.Aux) if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpLocalAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a == b && o1 == o2) + v.AuxInt = boolToAuxInt(a == b && o1 == o2) return true } break } // match: (EqPtr (OffPtr [o1] p1) p2) // cond: isSamePtr(p1, p2) - // result: (ConstBool [b2i(o1 == 0)]) + // result: (ConstBool [o1 == 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) p1 := v_0.Args[0] p2 := v_1 if !(isSamePtr(p1, p2)) { continue } v.reset(OpConstBool) - v.AuxInt = b2i(o1 == 0) + v.AuxInt = boolToAuxInt(o1 == 0) return true } break } // match: (EqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) // cond: isSamePtr(p1, p2) - // result: (ConstBool [b2i(o1 == o2)]) + // result: (ConstBool [o1 == o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) p1 := v_0.Args[0] if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) p2 := v_1.Args[0] if !(isSamePtr(p1, p2)) { continue } v.reset(OpConstBool) - v.AuxInt = b2i(o1 == o2) + v.AuxInt = boolToAuxInt(o1 == o2) return true } break } // match: (EqPtr (Const32 [c]) (Const32 [d])) - // result: (ConstBool [b2i(c == d)]) + // result: (ConstBool [c == d]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpConst32 { continue } - c := v_0.AuxInt + c := auxIntToInt32(v_0.AuxInt) if v_1.Op != OpConst32 { continue } - d := v_1.AuxInt + d := auxIntToInt32(v_1.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c == d) + v.AuxInt = boolToAuxInt(c == d) return true } break } // match: (EqPtr (Const64 [c]) (Const64 [d])) - // result: (ConstBool [b2i(c == d)]) + // result: (ConstBool [c == d]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpConst64 { continue } - c := v_0.AuxInt + c := auxIntToInt64(v_0.AuxInt) if v_1.Op != OpConst64 { continue } - d := v_1.AuxInt + d := auxIntToInt64(v_1.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c == d) + v.AuxInt = boolToAuxInt(c == d) return true } break } // match: (EqPtr (LocalAddr _ _) (Addr _)) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr || v_1.Op != OpAddr { continue } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } break } // match: (EqPtr (OffPtr (LocalAddr _ _)) (Addr _)) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { @@ -8529,13 +8529,13 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } break } // match: (EqPtr (LocalAddr _ _) (OffPtr (Addr _))) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr || v_1.Op != OpOffPtr { @@ -8546,13 +8546,13 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } break } // match: (EqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { @@ -8567,7 +8567,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } break @@ -8598,7 +8598,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { // result: (Not (IsNonNil p)) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { - if v_0.Op != OpConst32 || v_0.AuxInt != 0 { + if v_0.Op != OpConst32 || auxIntToInt32(v_0.AuxInt) != 0 { continue } p := v_1 @@ -8614,7 +8614,7 @@ func rewriteValuegeneric_OpEqPtr(v *Value) bool { // result: (Not (IsNonNil p)) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { - if v_0.Op != OpConst64 || v_0.AuxInt != 0 { + if v_0.Op != OpConst64 || auxIntToInt64(v_0.AuxInt) != 0 { continue } p := v_1 @@ -9432,55 +9432,55 @@ func rewriteValuegeneric_OpIsInBounds(v *Value) bool { func rewriteValuegeneric_OpIsNonNil(v *Value) bool { v_0 := v.Args[0] // match: (IsNonNil (ConstNil)) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { if v_0.Op != OpConstNil { break } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } // match: (IsNonNil (Const32 [c])) - // result: (ConstBool [b2i(c != 0)]) + // result: (ConstBool [c != 0]) for { if v_0.Op != OpConst32 { break } - c := v_0.AuxInt + c := auxIntToInt32(v_0.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c != 0) + v.AuxInt = boolToAuxInt(c != 0) return true } // match: (IsNonNil (Const64 [c])) - // result: (ConstBool [b2i(c != 0)]) + // result: (ConstBool [c != 0]) for { if v_0.Op != OpConst64 { break } - c := v_0.AuxInt + c := auxIntToInt64(v_0.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c != 0) + v.AuxInt = boolToAuxInt(c != 0) return true } // match: (IsNonNil (Addr _)) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { if v_0.Op != OpAddr { break } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } // match: (IsNonNil (LocalAddr _ _)) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { if v_0.Op != OpLocalAddr { break } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } return false @@ -15610,249 +15610,249 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { v_1 := v.Args[1] v_0 := v.Args[0] // match: (NeqPtr x x) - // result: (ConstBool [0]) + // result: (ConstBool [false]) for { x := v_0 if x != v_1 { break } v.reset(OpConstBool) - v.AuxInt = 0 + v.AuxInt = boolToAuxInt(false) return true } // match: (NeqPtr (Addr {a} _) (Addr {b} _)) - // result: (ConstBool [b2i(a != b)]) + // result: (ConstBool [a != b]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpAddr { continue } - b := v_1.Aux + b := auxToSym(v_1.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b) + v.AuxInt = boolToAuxInt(a != b) return true } break } // match: (NeqPtr (Addr {a} _) (OffPtr [o] (Addr {b} _))) - // result: (ConstBool [b2i(a != b || o != 0)]) + // result: (ConstBool [a != b || o != 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpOffPtr { continue } - o := v_1.AuxInt + o := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b || o != 0) + v.AuxInt = boolToAuxInt(a != b || o != 0) return true } break } // match: (NeqPtr (OffPtr [o1] (Addr {a} _)) (OffPtr [o2] (Addr {b} _))) - // result: (ConstBool [b2i(a != b || o1 != o2)]) + // result: (ConstBool [a != b || o1 != o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) v_0_0 := v_0.Args[0] if v_0_0.Op != OpAddr { continue } - a := v_0_0.Aux + a := auxToSym(v_0_0.Aux) if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b || o1 != o2) + v.AuxInt = boolToAuxInt(a != b || o1 != o2) return true } break } // match: (NeqPtr (LocalAddr {a} _ _) (LocalAddr {b} _ _)) - // result: (ConstBool [b2i(a != b)]) + // result: (ConstBool [a != b]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpLocalAddr { continue } - b := v_1.Aux + b := auxToSym(v_1.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b) + v.AuxInt = boolToAuxInt(a != b) return true } break } // match: (NeqPtr (LocalAddr {a} _ _) (OffPtr [o] (LocalAddr {b} _ _))) - // result: (ConstBool [b2i(a != b || o != 0)]) + // result: (ConstBool [a != b || o != 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr { continue } - a := v_0.Aux + a := auxToSym(v_0.Aux) if v_1.Op != OpOffPtr { continue } - o := v_1.AuxInt + o := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpLocalAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b || o != 0) + v.AuxInt = boolToAuxInt(a != b || o != 0) return true } break } // match: (NeqPtr (OffPtr [o1] (LocalAddr {a} _ _)) (OffPtr [o2] (LocalAddr {b} _ _))) - // result: (ConstBool [b2i(a != b || o1 != o2)]) + // result: (ConstBool [a != b || o1 != o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) v_0_0 := v_0.Args[0] if v_0_0.Op != OpLocalAddr { continue } - a := v_0_0.Aux + a := auxToSym(v_0_0.Aux) if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) v_1_0 := v_1.Args[0] if v_1_0.Op != OpLocalAddr { continue } - b := v_1_0.Aux + b := auxToSym(v_1_0.Aux) v.reset(OpConstBool) - v.AuxInt = b2i(a != b || o1 != o2) + v.AuxInt = boolToAuxInt(a != b || o1 != o2) return true } break } // match: (NeqPtr (OffPtr [o1] p1) p2) // cond: isSamePtr(p1, p2) - // result: (ConstBool [b2i(o1 != 0)]) + // result: (ConstBool [o1 != 0]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) p1 := v_0.Args[0] p2 := v_1 if !(isSamePtr(p1, p2)) { continue } v.reset(OpConstBool) - v.AuxInt = b2i(o1 != 0) + v.AuxInt = boolToAuxInt(o1 != 0) return true } break } // match: (NeqPtr (OffPtr [o1] p1) (OffPtr [o2] p2)) // cond: isSamePtr(p1, p2) - // result: (ConstBool [b2i(o1 != o2)]) + // result: (ConstBool [o1 != o2]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { continue } - o1 := v_0.AuxInt + o1 := auxIntToInt64(v_0.AuxInt) p1 := v_0.Args[0] if v_1.Op != OpOffPtr { continue } - o2 := v_1.AuxInt + o2 := auxIntToInt64(v_1.AuxInt) p2 := v_1.Args[0] if !(isSamePtr(p1, p2)) { continue } v.reset(OpConstBool) - v.AuxInt = b2i(o1 != o2) + v.AuxInt = boolToAuxInt(o1 != o2) return true } break } // match: (NeqPtr (Const32 [c]) (Const32 [d])) - // result: (ConstBool [b2i(c != d)]) + // result: (ConstBool [c != d]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpConst32 { continue } - c := v_0.AuxInt + c := auxIntToInt32(v_0.AuxInt) if v_1.Op != OpConst32 { continue } - d := v_1.AuxInt + d := auxIntToInt32(v_1.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c != d) + v.AuxInt = boolToAuxInt(c != d) return true } break } // match: (NeqPtr (Const64 [c]) (Const64 [d])) - // result: (ConstBool [b2i(c != d)]) + // result: (ConstBool [c != d]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpConst64 { continue } - c := v_0.AuxInt + c := auxIntToInt64(v_0.AuxInt) if v_1.Op != OpConst64 { continue } - d := v_1.AuxInt + d := auxIntToInt64(v_1.AuxInt) v.reset(OpConstBool) - v.AuxInt = b2i(c != d) + v.AuxInt = boolToAuxInt(c != d) return true } break } // match: (NeqPtr (LocalAddr _ _) (Addr _)) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr || v_1.Op != OpAddr { continue } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } break } // match: (NeqPtr (OffPtr (LocalAddr _ _)) (Addr _)) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { @@ -15863,13 +15863,13 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } break } // match: (NeqPtr (LocalAddr _ _) (OffPtr (Addr _))) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpLocalAddr || v_1.Op != OpOffPtr { @@ -15880,13 +15880,13 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } break } // match: (NeqPtr (OffPtr (LocalAddr _ _)) (OffPtr (Addr _))) - // result: (ConstBool [1]) + // result: (ConstBool [true]) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { if v_0.Op != OpOffPtr { @@ -15901,7 +15901,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { continue } v.reset(OpConstBool) - v.AuxInt = 1 + v.AuxInt = boolToAuxInt(true) return true } break @@ -15930,7 +15930,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { // result: (IsNonNil p) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { - if v_0.Op != OpConst32 || v_0.AuxInt != 0 { + if v_0.Op != OpConst32 || auxIntToInt32(v_0.AuxInt) != 0 { continue } p := v_1 @@ -15944,7 +15944,7 @@ func rewriteValuegeneric_OpNeqPtr(v *Value) bool { // result: (IsNonNil p) for { for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { - if v_0.Op != OpConst64 || v_0.AuxInt != 0 { + if v_0.Op != OpConst64 || auxIntToInt64(v_0.AuxInt) != 0 { continue } p := v_1