| // run | |
| // Copyright 2014 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. | |
| // Issue 7944: | |
| // Liveness bitmaps said b was live at call to g, | |
| // but no one told the register optimizer. | |
| package main | |
| import "runtime" | |
| func f(b []byte) { | |
| for len(b) > 0 { | |
| n := len(b) | |
| n = f1(n) | |
| f2(b[n:]) | |
| b = b[n:] | |
| } | |
| g() | |
| } | |
| func f1(n int) int { | |
| runtime.GC() | |
| return n | |
| } | |
| func f2(b []byte) { | |
| runtime.GC() | |
| } | |
| func g() { | |
| runtime.GC() | |
| } | |
| func main() { | |
| f(make([]byte, 100)) | |
| } |