| // Copyright 2020 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. | |
| TEXT ·bad1(SB), 0, $0 | |
| MOVQ $0, BP // want `frame pointer is clobbered before saving` | |
| RET | |
| TEXT ·bad2(SB), 0, $0 | |
| MOVQ AX, BP // want `frame pointer is clobbered before saving` | |
| RET | |
| TEXT ·bad3(SB), 0, $0 | |
| MOVQ 6(AX), BP // want `frame pointer is clobbered before saving` | |
| RET | |
| TEXT ·good1(SB), 0, $0 | |
| PUSHQ BP | |
| MOVQ $0, BP // this is ok | |
| POPQ BP | |
| RET | |
| TEXT ·good2(SB), 0, $0 | |
| MOVQ BP, BX | |
| MOVQ $0, BP // this is ok | |
| MOVQ BX, BP | |
| RET | |
| TEXT ·good3(SB), 0, $0 | |
| CMPQ AX, BX | |
| JEQ skip | |
| MOVQ $0, BP // this is ok | |
| skip: | |
| RET | |
| TEXT ·good4(SB), 0, $0 | |
| RET | |
| MOVQ $0, BP // this is ok | |
| RET | |
| TEXT ·good5(SB), 0, $8 | |
| MOVQ $0, BP // this is ok | |
| RET |