[llvm] d89b771 - [ARM] Add alias tests for ROPI/RWPI
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 2 10:34:01 PST 2024
Author: Fangrui Song
Date: 2024-03-02T10:33:57-08:00
New Revision: d89b771ef5fe39403a2ad525fa36efbc4ce2a517
URL: https://github.com/llvm/llvm-project/commit/d89b771ef5fe39403a2ad525fa36efbc4ce2a517
DIFF: https://github.com/llvm/llvm-project/commit/d89b771ef5fe39403a2ad525fa36efbc4ce2a517.diff
LOG: [ARM] Add alias tests for ROPI/RWPI
https://reviews.llvm.org/D23195 does not test aliases.
Added:
Modified:
llvm/test/CodeGen/ARM/arm-position-independence.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/ARM/arm-position-independence.ll b/llvm/test/CodeGen/ARM/arm-position-independence.ll
index 54b525b879d926..f6be5866c2838c 100644
--- a/llvm/test/CodeGen/ARM/arm-position-independence.ll
+++ b/llvm/test/CodeGen/ARM/arm-position-independence.ll
@@ -23,6 +23,11 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
@a = external global i32, align 4
@b = external constant i32, align 4
+ at c0 = global i32 42, align 4
+ at c1 = alias i32, ptr @c0
+ at d0 = constant i32 42, align 4
+ at d1 = alias i32, ptr @d0
+ at take_addr_func_alias1 = alias ptr (), ptr @take_addr_func_alias
define i32 @read() {
entry:
@@ -360,6 +365,35 @@ entry:
; THUMB1_RO_PC-NEXT: .long take_addr_func-([[LPC]]+4)
}
+define ptr @take_addr_alias() {
+entry:
+ ret ptr @c1
+}
+; CHECK-LABEL: take_addr_alias:
+; ARM_RW_SB: movw r[[REG:[0-9]]], :lower16:c1(sbrel)
+; ARM_RW_SB: movt r[[REG]], :upper16:c1(sbrel)
+; ARM_RW_SB: add r0, r9, r[[REG]]
+
+define ptr @take_addr_const_alias() {
+entry:
+ ret ptr @d1
+}
+; CHECK-LABEL: take_addr_const_alias:
+; ARM_RO_PC: movw [[REG:r[0-9]]], :lower16:(d1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))
+; ARM_RO_PC-NEXT: movt [[REG]], :upper16:(d1-([[LPC]]+8))
+; ARM_RO_PC-NEXT: [[LPC]]:
+; ARM_RO_PC-NEXT: add r0, pc, [[REG]]
+
+define weak ptr @take_addr_func_alias() {
+entry:
+ ret ptr @take_addr_func_alias1
+}
+; CHECK-LABEL: take_addr_func_alias:
+; ARM_RO_PC: movw [[REG:r[0-9]]], :lower16:(take_addr_func_alias1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))
+; ARM_RO_PC-NEXT: movt [[REG]], :upper16:(take_addr_func_alias1-([[LPC]]+8))
+; ARM_RO_PC-NEXT: [[LPC]]:
+; ARM_RO_PC-NEXT: add r0, pc, [[REG]]
+
define ptr @block_addr() {
entry:
br label %lab1
More information about the llvm-commits
mailing list