xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/pie.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc  -mtriple=armv7-pc-linux-gnueabi -relocation-model=pic < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@foo = global i32 42
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i32* @get_foo() {
6*9880d681SAndroid Build Coastguard Worker  ret i32* @foo
7*9880d681SAndroid Build Coastguard Worker}
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; Test that we only use one load. Even that is only needed because there
10*9880d681SAndroid Build Coastguard Worker; doesn't seem to be pc relative relocations for movw movt.
11*9880d681SAndroid Build Coastguard Worker; CHECK:      ldr     r0, .LCPI0_0
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .L{{.*}}:
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add     r0, pc, r0
14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bx      lr
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!0}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1, !"PIE Level", i32 2}
19