Skip to content

Commit d89b771

Browse files
committed
[ARM] Add alias tests for ROPI/RWPI
https://reviews.llvm.org/D23195 does not test aliases.
1 parent f25debe commit d89b771

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

llvm/test/CodeGen/ARM/arm-position-independence.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
2323

2424
@a = external global i32, align 4
2525
@b = external constant i32, align 4
26+
@c0 = global i32 42, align 4
27+
@c1 = alias i32, ptr @c0
28+
@d0 = constant i32 42, align 4
29+
@d1 = alias i32, ptr @d0
30+
@take_addr_func_alias1 = alias ptr (), ptr @take_addr_func_alias
2631

2732
define i32 @read() {
2833
entry:
@@ -360,6 +365,35 @@ entry:
360365
; THUMB1_RO_PC-NEXT: .long take_addr_func-([[LPC]]+4)
361366
}
362367

368+
define ptr @take_addr_alias() {
369+
entry:
370+
ret ptr @c1
371+
}
372+
; CHECK-LABEL: take_addr_alias:
373+
; ARM_RW_SB: movw r[[REG:[0-9]]], :lower16:c1(sbrel)
374+
; ARM_RW_SB: movt r[[REG]], :upper16:c1(sbrel)
375+
; ARM_RW_SB: add r0, r9, r[[REG]]
376+
377+
define ptr @take_addr_const_alias() {
378+
entry:
379+
ret ptr @d1
380+
}
381+
; CHECK-LABEL: take_addr_const_alias:
382+
; ARM_RO_PC: movw [[REG:r[0-9]]], :lower16:(d1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))
383+
; ARM_RO_PC-NEXT: movt [[REG]], :upper16:(d1-([[LPC]]+8))
384+
; ARM_RO_PC-NEXT: [[LPC]]:
385+
; ARM_RO_PC-NEXT: add r0, pc, [[REG]]
386+
387+
define weak ptr @take_addr_func_alias() {
388+
entry:
389+
ret ptr @take_addr_func_alias1
390+
}
391+
; CHECK-LABEL: take_addr_func_alias:
392+
; ARM_RO_PC: movw [[REG:r[0-9]]], :lower16:(take_addr_func_alias1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))
393+
; ARM_RO_PC-NEXT: movt [[REG]], :upper16:(take_addr_func_alias1-([[LPC]]+8))
394+
; ARM_RO_PC-NEXT: [[LPC]]:
395+
; ARM_RO_PC-NEXT: add r0, pc, [[REG]]
396+
363397
define ptr @block_addr() {
364398
entry:
365399
br label %lab1

0 commit comments

Comments
 (0)