[Instrumentation] Fix a warning
[llvm-project.git] / llvm / test / CodeGen / AArch64 / avoid-zero-copy.mir
blobb940734c6988cb3f53743d8585ffe152579b0c90
1 # Check that we can remove the redundant save of constant registers such as $wzr
2 # RUN: llc -mtriple=aarch64-unknown-linux %s -verify-machineinstrs -start-before=machine-cp -o - | FileCheck %s --check-prefix ASM
3 # RUN: llc -mtriple=aarch64-unknown-linux %s -verify-machineinstrs -run-pass=machine-cp -o - | FileCheck %s
4 --- |
5   target triple = "aarch64-unknown-linux"
6   declare i32 @bar(i32) nounwind
7   define i32 @foo() nounwind {
8   ; ASM-LABEL: foo:
9   ; ASM:       // %bb.0:
10   ; ASM-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
11   ; ASM-NEXT:    mov w0, wzr
12   ; ASM-NEXT:    bl bar
13   ; ASM-NEXT:    mov w0, wzr
14   ; ASM-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
15   ; ASM-NEXT:    ret
16     call i32 @bar(i32 0)
17     ret i32 0
18   }
19 ...
20 ---
21 name: foo
22 frameInfo:
23   adjustsStack:    true
24 body: |
25   bb.0 (%ir-block.0):
26     ; CHECK-LABEL: name: foo
27     ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
28     ; CHECK-NEXT: $w0 = COPY $wzr
29     ; CHECK-NEXT: BL @bar, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0
30     ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
31     ; CHECK-NEXT: $w0 = COPY $wzr
32     ; CHECK-NEXT: RET_ReallyLR implicit $w0
33     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
34     renamable $w19 = COPY $wzr
35     $w0 = COPY renamable $w19
36     BL @bar, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $w0, implicit-def $sp, implicit-def $w0
37     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
38     $w0 = COPY killed renamable $w19
39     RET_ReallyLR implicit $w0
40 ...