| // asmcheck |
| |
| // Copyright 2025 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 common subexpression elimination of loads around other operations. |
| |
| package codegen |
| |
| func loadsAroundMemEqual(p *int, s1, s2 string) (int, bool) { |
| x := *p |
| eq := s1 == s2 |
| y := *p |
| // arm64:"MOVD ZR, R0" |
| return x - y, eq |
| } |
| |
| func loadsAroundVarDefAndZero(p *int) (int, *int) { |
| x := *p |
| var s [2]*int |
| s[0] = p |
| y := *p |
| // arm64:"MOVD ZR, R0" |
| return x - y, s[0] |
| } |