| ; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s | |
| ; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=CHECK-NORMAL | |
| define void @local() nonlazybind { | |
| ret void | |
| } | |
| declare void @nonlocal() nonlazybind | |
| define void @test_laziness() { | |
| ; CHECK-LABEL: test_laziness: | |
| ; CHECK: bl _local | |
| ; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal@GOTPAGE | |
| ; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal@GOTPAGEOFF] | |
| ; CHECK: blr [[FUNC]] | |
| ; CHECK-NORMAL-LABEL: test_laziness: | |
| ; CHECK-NORMAL: bl _local | |
| ; CHEKC-NORMAL: bl _nonlocal | |
| call void @local() | |
| call void @nonlocal() | |
| ret void | |
| } | |
| define void @test_laziness_tail() { | |
| ; CHECK-LABEL: test_laziness_tail: | |
| ; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal@GOTPAGE | |
| ; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal@GOTPAGEOFF] | |
| ; CHECK: br [[FUNC]] | |
| ; CHECK-NORMAL-LABEL: test_laziness_tail: | |
| ; CHECK-NORMAL: b _nonlocal | |
| tail call void @nonlocal() | |
| ret void | |
| } |