| // asmcheck |
| |
| // Copyright 2018 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. |
| |
| // Make sure a pointer variable and a zero-sized variable |
| // aren't allocated to the same stack slot. |
| // See issue 24993. |
| |
| package codegen |
| |
| func zeroSize() { |
| c := make(chan struct{}) |
| // amd64:`MOVQ\t\$0, ""\.s\+56\(SP\)` |
| var s *int |
| // force s to be a stack object, also use some (fixed) stack space |
| g(&s, 1, 2, 3, 4, 5) |
| |
| // amd64:`LEAQ\t""\..*\+55\(SP\)` |
| c <- struct{}{} |
| } |
| |
| //go:noinline |
| func g(**int, int, int, int, int, int) {} |