modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/issue7944.go (about)

     1  // run
     2  
     3  // Copyright 2014 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 7944:
     8  // Liveness bitmaps said b was live at call to g,
     9  // but no one told the register optimizer.
    10  
    11  package main
    12  
    13  import "runtime"
    14  
    15  func f(b []byte) {
    16  	for len(b) > 0 {
    17  		n := len(b)
    18  		n = f1(n)
    19  		f2(b[n:])
    20  		b = b[n:]
    21  	}
    22  	g()
    23  }
    24  
    25  func f1(n int) int {
    26  	runtime.GC()
    27  	return n
    28  }
    29  
    30  func f2(b []byte) {
    31  	runtime.GC()
    32  }
    33  
    34  func g() {
    35  	runtime.GC()
    36  }
    37  
    38  func main() {
    39  	f(make([]byte, 100))
    40  }