Skip to content

Commit 3680b5e

Browse files
wdvxdr1123mvdan
authored andcommitted
cmd/compile: teach prove about bitwise OR operation
Fixes #45928. Change-Id: Ifbb0effbca4ab7c0eb56069fee40edb564553c35 Reviewed-on: https://go-review.googlesource.com/c/go/+/410336 Reviewed-by: Cuong Manh Le <[email protected]> Run-TryBot: Wayne Zuo <[email protected]> Reviewed-by: David Chase <[email protected]> Reviewed-by: Than McIntosh <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
1 parent d2e0587 commit 3680b5e

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

src/cmd/compile/internal/ssa/prove.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,9 @@ func prove(f *Func) {
842842
case OpAnd64, OpAnd32, OpAnd16, OpAnd8:
843843
ft.update(b, v, v.Args[1], unsigned, lt|eq)
844844
ft.update(b, v, v.Args[0], unsigned, lt|eq)
845+
case OpOr64, OpOr32, OpOr16, OpOr8:
846+
ft.update(b, v, v.Args[1], unsigned, gt|eq)
847+
ft.update(b, v, v.Args[0], unsigned, gt|eq)
845848
}
846849
}
847850
}

test/prove.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,11 @@ func issue51622(b []byte) int {
10531053
return 0
10541054
}
10551055

1056+
func issue45928(x int) {
1057+
combinedFrac := (x) / (x | (1 << 31)) // ERROR "Proved Neq64$"
1058+
useInt(combinedFrac)
1059+
}
1060+
10561061
//go:noinline
10571062
func useInt(a int) {
10581063
}

0 commit comments

Comments
 (0)