[llvm] df00dac - [ARM] Use getSymbolPreferLocal() in GetARMGVSymbol

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 26 02:34:36 PDT 2022


Author: Alex Richardson
Date: 2022-08-26T09:34:06Z
New Revision: df00dac828d7d0f88106d34b12a4eafaa8dd93ea

URL: https://github.com/llvm/llvm-project/commit/df00dac828d7d0f88106d34b12a4eafaa8dd93ea
DIFF: https://github.com/llvm/llvm-project/commit/df00dac828d7d0f88106d34b12a4eafaa8dd93ea.diff

LOG: [ARM] Use getSymbolPreferLocal() in GetARMGVSymbol

This allows relaxing some relocations to symbol+offset instead of emitting
a relocation against a symbol.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D131433

Added: 
    

Modified: 
    llvm/lib/Target/ARM/ARMAsmPrinter.cpp
    llvm/test/CodeGen/ARM/dso-local-func.ll
    llvm/test/CodeGen/ARM/elf-preemption.ll
    llvm/test/CodeGen/ARM/thumb-function-section-reloc.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index e8a9176190c87..6c8952414388f 100644
--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -891,7 +891,7 @@ MCSymbol *ARMAsmPrinter::GetARMGVSymbol(const GlobalValue *GV,
 
     return MCSym;
   } else if (Subtarget->isTargetELF()) {
-    return getSymbol(GV);
+    return getSymbolPreferLocal(*GV);
   }
   llvm_unreachable("unexpected target");
 }

diff  --git a/llvm/test/CodeGen/ARM/dso-local-func.ll b/llvm/test/CodeGen/ARM/dso-local-func.ll
index 6dfbe324f05fc..987fec6787225 100644
--- a/llvm/test/CodeGen/ARM/dso-local-func.ll
+++ b/llvm/test/CodeGen/ARM/dso-local-func.ll
@@ -24,7 +24,7 @@ define dso_local ptr @dsolocal_func() nounwind {
 ; PIC-NEXT:     .p2align	2
 ; PIC-NEXT:   @ %bb.1:
 ; PIC-NEXT:   .LCPI0_0:
-; PIC-NEXT:     .long	dsolocal_func-(.LPC0_0+8)
+; PIC-NEXT:     .long	.Ldsolocal_func$local-(.LPC0_0+8)
 ; CHECK-NEXT: .Lfunc_end0:
 ; CHECK-NEXT: 	.size	dsolocal_func, .Lfunc_end0-dsolocal_func
 ; PIC-NEXT:     .size .Ldsolocal_func$local, .Lfunc_end0-dsolocal_func

diff  --git a/llvm/test/CodeGen/ARM/elf-preemption.ll b/llvm/test/CodeGen/ARM/elf-preemption.ll
index 0aaf78dae32b1..efb1c6aa26817 100644
--- a/llvm/test/CodeGen/ARM/elf-preemption.ll
+++ b/llvm/test/CodeGen/ARM/elf-preemption.ll
@@ -43,7 +43,7 @@ define ptr @get_dsolocal_var() nounwind {
 ; PIC-NEXT:    .p2align 2
 ; PIC-NEXT:  @ %bb.1:
 ; PIC-NEXT:  .LCPI1_0:
-; PIC-NEXT:    .long dsolocal_var-(.LPC1_0+8)
+; PIC-NEXT:    .long .Ldsolocal_var$local-(.LPC1_0+8)
   ret ptr @dsolocal_var
 }
 
@@ -147,7 +147,7 @@ define dso_local ptr @dsolocal_func() nounwind {
 ; PIC-NEXT:    .p2align 2
 ; PIC-NEXT:  @ %bb.1:
 ; PIC-NEXT:  .LCPI6_0:
-; PIC-NEXT:    .long dsolocal_func-(.LPC6_0+8)
+; PIC-NEXT:    .long .Ldsolocal_func$local-(.LPC6_0+8)
   ret ptr @dsolocal_func
 }
 
@@ -185,7 +185,7 @@ define dso_local void @call_dsolocal_func() nounwind {
 ; PIC:       @ %bb.0:
 ; PIC-NEXT:    .save {r11, lr}
 ; PIC-NEXT:    push {r11, lr}
-; PIC-NEXT:    bl dsolocal_func
+; PIC-NEXT:    bl .Ldsolocal_func$local
 ; PIC-NEXT:    pop {r11, pc}
   call ptr @dsolocal_func()
   ret void

diff  --git a/llvm/test/CodeGen/ARM/thumb-function-section-reloc.ll b/llvm/test/CodeGen/ARM/thumb-function-section-reloc.ll
index e5a980faa2c48..beb0d839c8d89 100644
--- a/llvm/test/CodeGen/ARM/thumb-function-section-reloc.ll
+++ b/llvm/test/CodeGen/ARM/thumb-function-section-reloc.ll
@@ -17,10 +17,10 @@
 ; RELOCS-NEXT:     0x0 R_ARM_PREL31 .text._ZdlPv
 ; RELOCS-NEXT:   }
 ; RELOCS-NEXT:   Section (7) .rel.text.test {
-; RELOCS-NEXT:     0x4 R_ARM_CALL _ZdlPv
+; RELOCS-NEXT:     0x4 R_ARM_CALL .L_ZdlPv$local
 ; RELOCS-NEXT:     0xC R_ARM_ABS32 .L_ZdlPv$local
 ; RELOCS-NEXT:     0x10 R_ARM_ABS32 .L_ZdlPv$local
-; RELOCS-NEXT:     0x1C R_ARM_REL32 _ZdlPv
+; RELOCS-NEXT:     0x1C R_ARM_REL32 .L_ZdlPv$local
 ; RELOCS-NEXT:   }
 ; RELOCS-NEXT:   Section (9) .rel.ARM.exidx.text.test {
 ; RELOCS-NEXT:     0x0 R_ARM_PREL31 .text.test
@@ -67,7 +67,7 @@ define ptr @test(ptr %ptr) nounwind {
 ; CHECK:       @ %bb.0: @ %entry
 ; CHECK-NEXT:    .save {r11, lr}
 ; CHECK-NEXT:    push {r11, lr}
-; CHECK-NEXT:    bl _ZdlPv{{$}}
+; CHECK-NEXT:    bl .L_ZdlPv$local
 ; CHECK-NEXT:    ldr r0, .LCPI1_0
 ; CHECK-NEXT:    @APP
 ; CHECK-NEXT:    .long .L_ZdlPv$local
@@ -83,7 +83,7 @@ define ptr @test(ptr %ptr) nounwind {
 ; CHECK-NEXT:    .p2align 2
 ; CHECK-NEXT:  @ %bb.1:
 ; CHECK-NEXT:  .LCPI1_0:
-; CHECK-NEXT:    .long _ZdlPv-(.LPC1_0+8)
+; CHECK-NEXT:    .long .L_ZdlPv$local-(.LPC1_0+8)
 entry:
   call void @_ZdlPv(ptr %ptr)
   ; This inline assembly is needed to highlight the missing Thumb LSB since


        


More information about the llvm-commits mailing list