github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/issue4752.go (about)

     1  // run
     2  
     3  // Copyright 2013 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  package main
     8  
     9  func F(xi, yi interface{}) uint64 {
    10  	x, y := xi.(uint64), yi.(uint64)
    11  	return x &^ y
    12  }
    13  
    14  func G(xi, yi interface{}) uint64 {
    15  	return xi.(uint64) &^ yi.(uint64) // generates incorrect code
    16  }
    17  
    18  func main() {
    19  	var x, y uint64 = 0, 1 << 63
    20  	f := F(x, y)
    21  	g := G(x, y)
    22  	if f != 0 || g != 0 {
    23  		println("F", f, "G", g)
    24  		panic("bad")
    25  	}
    26  }