[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