1; RUN: llc -mtriple=arm64-apple-ios -global-isel -o - %s | FileCheck %s 2 3define ptr @rt0(i32 %x) nounwind readnone { 4entry: 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 10} 11 12define ptr @rt0_call_clobber(i32 %x) nounwind readnone { 13entry: 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 27} 28 29define ptr @rt2() nounwind readnone { 30entry: 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 41} 42 43 44declare i32 @foo() 45declare ptr @llvm.returnaddress(i32) nounwind readnone 46