...
Run Format

Source file test/fixedbugs/issue14591.go

Documentation: test/fixedbugs

  // run
  
  // Copyright 2016 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.
  
  // Test to make sure we don't think values are dead
  // when they are assigned to a PPARAMOUT slot before
  // the last GC safepoint.
  
  package main
  
  import (
  	"fmt"
  	"runtime"
  )
  
  // When a T is deallocated, T[1] is certain to
  // get clobbered (the runtime writes 0xdeaddeaddeaddead there).
  type T [4]int
  
  func f() (r, s *T) {
  	r = &T{0x30, 0x31, 0x32, 0x33}
  	runtime.GC()
  	s = &T{0x40, 0x41, 0x42, 0x43}
  	runtime.GC()
  	return
  }
  
  func main() {
  	r, s := f()
  	if r[1] != 0x31 {
  		fmt.Printf("bad r[1], want 0x31 got %x\n", r[1])
  	}
  	if s[1] != 0x41 {
  		fmt.Printf("bad s[1], want 0x41 got %x\n", s[1])
  	}
  }
  

View as plain text