diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
| commit | f8af5cf600354830d4ccf59732403f0f073eccb9 (patch) | |
| tree | 2ba0398b4c42ad4f55561327538044fd2c925a8b /test/CodeGen/AArch64/basic-pic.ll | |
| parent | 59d6cff90eecf31cb3dd860c4e786674cfdd42eb (diff) | |
Notes
Diffstat (limited to 'test/CodeGen/AArch64/basic-pic.ll')
| -rw-r--r-- | test/CodeGen/AArch64/basic-pic.ll | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/test/CodeGen/AArch64/basic-pic.ll b/test/CodeGen/AArch64/basic-pic.ll index da94041c95ff..682b7ba69d95 100644 --- a/test/CodeGen/AArch64/basic-pic.ll +++ b/test/CodeGen/AArch64/basic-pic.ll @@ -1,70 +1,54 @@ ; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -relocation-model=pic %s -o - | FileCheck %s -; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -relocation-model=pic -filetype=obj %s -o -| llvm-objdump -r - | FileCheck --check-prefix=CHECK-ELF %s @var = global i32 0 -; CHECK-ELF: RELOCATION RECORDS FOR [.text] - define i32 @get_globalvar() { -; CHECK: get_globalvar: +; CHECK-LABEL: get_globalvar: %val = load i32* @var ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var ; CHECK: ldr x[[GOTLOC:[0-9]+]], [x[[GOTHI]], #:got_lo12:var] ; CHECK: ldr w0, [x[[GOTLOC]]] -; CHECK-ELF: R_AARCH64_ADR_GOT_PAGE var -; CHECK-ELF: R_AARCH64_LD64_GOT_LO12_NC var ret i32 %val } define i32* @get_globalvaraddr() { -; CHECK: get_globalvaraddr: +; CHECK-LABEL: get_globalvaraddr: %val = load i32* @var ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var ; CHECK: ldr x0, [x[[GOTHI]], #:got_lo12:var] -; CHECK-ELF: R_AARCH64_ADR_GOT_PAGE var -; CHECK-ELF: R_AARCH64_LD64_GOT_LO12_NC var ret i32* @var } @hiddenvar = hidden global i32 0 define i32 @get_hiddenvar() { -; CHECK: get_hiddenvar: +; CHECK-LABEL: get_hiddenvar: %val = load i32* @hiddenvar ; CHECK: adrp x[[HI:[0-9]+]], hiddenvar ; CHECK: ldr w0, [x[[HI]], #:lo12:hiddenvar] -; CHECK-ELF: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar -; CHECK-ELF: R_AARCH64_LDST32_ABS_LO12_NC hiddenvar ret i32 %val } define i32* @get_hiddenvaraddr() { -; CHECK: get_hiddenvaraddr: +; CHECK-LABEL: get_hiddenvaraddr: %val = load i32* @hiddenvar ; CHECK: adrp [[HI:x[0-9]+]], hiddenvar ; CHECK: add x0, [[HI]], #:lo12:hiddenvar -; CHECK-ELF: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar -; CHECK-ELF: R_AARCH64_ADD_ABS_LO12_NC hiddenvar ret i32* @hiddenvar } define void()* @get_func() { -; CHECK: get_func: +; CHECK-LABEL: get_func: ret void()* bitcast(void()*()* @get_func to void()*) ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:get_func ; CHECK: ldr x0, [x[[GOTHI]], #:got_lo12:get_func] - - ; Particularly important that the ADRP gets a relocation, LLVM tends to think - ; it can relax it because it knows where get_func is. It can't! -; CHECK-ELF: R_AARCH64_ADR_GOT_PAGE get_func -; CHECK-ELF: R_AARCH64_LD64_GOT_LO12_NC get_func -}
\ No newline at end of file +} |
