| // run |
| |
| // Copyright 2019 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Values smaller than 64-bits were mistakenly always proven to be |
| // non-negative. |
| // |
| // The tests here are marked go:noinline to ensure they're |
| // independently optimized by SSA. |
| |
| package main |
| |
| var x int32 = -1 |
| |
| //go:noinline |
| func a() { |
| if x != -1 { |
| panic(1) |
| } |
| if x > 0 || x != -1 { |
| panic(2) |
| } |
| } |
| |
| //go:noinline |
| func b() { |
| if x != -1 { |
| panic(3) |
| } |
| if x > 0 { |
| panic(4) |
| } |
| } |
| |
| //go:noinline |
| func c() { |
| if x > 0 || x != -1 { |
| panic(5) |
| } |
| if x > 0 || x != -1 { |
| panic(6) |
| } |
| } |
| |
| func main() { |
| a() |
| b() |
| c() |
| } |