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// Code was miscompiled on ppc64le due to incorrect zero-extension 8// that was CSE'd. 9 10package main 11 12//go:noinline 13func g(i uint64) uint64 { 14 return uint64(uint32(i)) 15} 16 17var sink uint64 18 19func main() { 20 for i := uint64(0); i < 1; i++ { 21 i32 := int32(i - 1) 22 sink = uint64((uint32(i32) << 1) ^ uint32((i32 >> 31))) 23 x := g(uint64(i32)) 24 if x != uint64(uint32(i32)) { 25 panic(x) 26 } 27 } 28} 29