// runoutput // 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. // Check that {5,6,8,9}g/ggen.c:clearfat is zeroing the entire object. package main import ( "bytes" "fmt" "strconv" "strings" ) const ntest = 1100 func main() { var decls, calls bytes.Buffer for i := 1; i <= ntest; i++ { s := strconv.Itoa(i) decls.WriteString(strings.Replace(decl, "$", s, -1)) calls.WriteString(strings.Replace("poison$()\n\tclearfat$()\n\t", "$", s, -1)) } program = strings.Replace(program, "$DECLS", decls.String(), 1) program = strings.Replace(program, "$CALLS", calls.String(), 1) fmt.Print(program) } var program = `package main var count int $DECLS func main() { $CALLS if count != 0 { println("failed", count, "case(s)") } } ` const decl = ` func poison$() { // Grow and poison the stack space that will be used by clearfat$ var t [2*$]byte for i := range t { t[i] = 0xff } } func clearfat$() { var t [$]byte for _, x := range t { if x != 0 { // println("clearfat$: index", i, "expected 0, got", x) count++ break } } } `