1// run 2 3// Copyright 2019 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Values smaller than 64-bits were mistakenly always proven to be 8// non-negative. 9// 10// The tests here are marked go:noinline to ensure they're 11// independently optimized by SSA. 12 13package main 14 15var x int32 = -1 16 17//go:noinline 18func a() { 19 if x != -1 { 20 panic(1) 21 } 22 if x > 0 || x != -1 { 23 panic(2) 24 } 25} 26 27//go:noinline 28func b() { 29 if x != -1 { 30 panic(3) 31 } 32 if x > 0 { 33 panic(4) 34 } 35} 36 37//go:noinline 38func c() { 39 if x > 0 || x != -1 { 40 panic(5) 41 } 42 if x > 0 || x != -1 { 43 panic(6) 44 } 45} 46 47func main() { 48 a() 49 b() 50 c() 51} 52