blob: e04373eb72371e7979707fd2cc1629a8a177c762 [file] [log] [blame] [edit]
// +build amd64 s390x arm64
// errorcheck -0 -d=ssa/phiopt/debug=3
// Copyright 2016 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.
package main
//go:noinline
func f0(a bool) bool {
x := false
if a {
x = true
} else {
x = false
}
return x // ERROR "converted OpPhi to Copy$"
}
//go:noinline
func f1(a bool) bool {
x := false
if a {
x = false
} else {
x = true
}
return x // ERROR "converted OpPhi to Not$"
}
//go:noinline
func f2(a, b int) bool {
x := true
if a == b {
x = false
}
return x // ERROR "converted OpPhi to Not$"
}
//go:noinline
func f3(a, b int) bool {
x := false
if a == b {
x = true
}
return x // ERROR "converted OpPhi to Copy$"
}
//go:noinline
func f4(a, b bool) bool {
return a || b // ERROR "converted OpPhi to OrB$"
}
//go:noinline
func f5or(a int, b bool) bool {
var x bool
if a == 0 {
x = true
} else {
x = b
}
return x // ERROR "converted OpPhi to OrB$"
}
//go:noinline
func f5and(a int, b bool) bool {
var x bool
if a == 0 {
x = b
} else {
x = false
}
return x // ERROR "converted OpPhi to AndB$"
}
//go:noinline
func f6or(a int, b bool) bool {
x := b
if a == 0 {
// f6or has side effects so the OpPhi should not be converted.
x = f6or(a, b)
}
return x
}
//go:noinline
func f6and(a int, b bool) bool {
x := b
if a == 0 {
// f6and has side effects so the OpPhi should not be converted.
x = f6and(a, b)
}
return x
}
//go:noinline
func f7or(a bool, b bool) bool {
return a || b // ERROR "converted OpPhi to OrB$"
}
//go:noinline
func f7and(a bool, b bool) bool {
return a && b // ERROR "converted OpPhi to AndB$"
}
//go:noinline
func f8(s string) (string, bool) {
neg := false
if s[0] == '-' { // ERROR "converted OpPhi to Copy$"
neg = true
s = s[1:]
}
return s, neg
}
var d int
//go:noinline
func f9(a, b int) bool {
c := false
if a < 0 { // ERROR "converted OpPhi to Copy$"
if b < 0 {
d = d + 1
}
c = true
}
return c
}
func main() {
}