[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-returnaddr.ll
blob2e17a72f7bd9de1dbefde3af2304b62b78de09c5
1 ; RUN: llc -mtriple=arm64-apple-ios -global-isel -o - %s | FileCheck %s
3 define ptr @rt0(i32 %x) nounwind readnone {
4 entry:
5 ; CHECK-LABEL: rt0:
6 ; CHECK:       hint #7
7 ; CHECK-NEXT:  mov x0, x30
8   %0 = tail call ptr @llvm.returnaddress(i32 0)
9   ret ptr %0
12 define ptr @rt0_call_clobber(i32 %x) nounwind readnone {
13 entry:
14 ; CHECK-LABEL: rt0_call_clobber:
15 ; CHECK:       stp x20, x19, [sp, #-32]!
16 ; CHECK:       stp x29, x30, [sp, #16]
17 ; CHECK:       mov x19, x30
18 ; CHECK:       bl _foo
19 ; CHECK:       mov x30, x19
20 ; CHECK-NEXT:  hint #7
21 ; CHECK-NEXT:  mov x0, x30
22 ; CHECK-NOT:   x0
23 ; CHECK:       ret
24   %ret = call i32 @foo()
25   %0 = tail call ptr @llvm.returnaddress(i32 0)
26   ret ptr %0
29 define ptr @rt2() nounwind readnone {
30 entry:
31 ; CHECK-LABEL: rt2:
32 ; CHECK:       ldr x[[reg:[0-9]+]], [x29]
33 ; CHECK:       ldr x[[reg]], [x[[reg]]]
34 ; CHECK:       ldr x30, [x[[reg]], #8]
35 ; CHECK:       hint #7
36 ; CHECK:       mov x0, x30
37 ; CHECK-NOT:   x0
38 ; CHECK:       ret
39   %0 = tail call ptr @llvm.returnaddress(i32 2)
40   ret ptr %0
44 declare i32 @foo()
45 declare ptr @llvm.returnaddress(i32) nounwind readnone