Source file test/fixedbugs/issue51101.go

     1  // run
     2  
     3  // Copyright 2022 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  // Issue 51101: on RISCV64, difference of two pointers
     8  // was marked as pointer and crashes GC.
     9  
    10  package main
    11  
    12  var a, b int
    13  
    14  func main() {
    15  	F(&b, &a)
    16  }
    17  
    18  //go:noinline
    19  func F(a, b *int) bool {
    20  	x := a == b
    21  	G(x)
    22  	y := a != b
    23  	return y
    24  }
    25  
    26  //go:noinline
    27  func G(bool) {
    28  	grow([1000]int{20})
    29  }
    30  
    31  func grow(x [1000]int) {
    32  	if x[0] != 0 {
    33  		x[0]--
    34  		grow(x)
    35  	}
    36  }
    37  

View as plain text