| ; 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 |
| } |