[llvm] 9a2b14a - [ARM] Emit local aliases (.Lfoo$local) for functions

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 9 02:54:02 PDT 2022


Author: Alex Richardson
Date: 2022-08-09T09:53:47Z
New Revision: 9a2b14afa02e46acbc7838bafa8d9e59b7cc86b8

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

LOG: [ARM] Emit local aliases (.Lfoo$local) for functions

ARMAsmPrinter::emitFunctionEntryLabel() was not calling the base class
function so the $local alias was not being emitted. This should not have
any function effect right now since ARM does not generate different code
for the $local symbols, but it could be improved in the future.

Reviewed By: MaskRay

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

Added: 
    

Modified: 
    llvm/lib/Target/ARM/ARMAsmPrinter.cpp
    llvm/test/CodeGen/ARM/dso-local-func.ll
    llvm/utils/UpdateTestChecks/asm.py

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index a7b63fcc13702..c527830fb48d7 100644
--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -82,8 +82,7 @@ void ARMAsmPrinter::emitFunctionEntryLabel() {
     OutStreamer->emitSymbolAttribute(S, MCSA_ELF_TypeFunction);
     OutStreamer->emitLabel(S);
   }
-
-  OutStreamer->emitLabel(CurrentFnSym);
+  AsmPrinter::emitFunctionEntryLabel();
 }
 
 void ARMAsmPrinter::emitXXStructor(const DataLayout &DL, const Constant *CV) {

diff  --git a/llvm/test/CodeGen/ARM/dso-local-func.ll b/llvm/test/CodeGen/ARM/dso-local-func.ll
index 233249a0a9e1f..ae57bbe527cb3 100644
--- a/llvm/test/CodeGen/ARM/dso-local-func.ll
+++ b/llvm/test/CodeGen/ARM/dso-local-func.ll
@@ -10,8 +10,7 @@ define dso_local ptr @dsolocal_func() nounwind {
 ; CHECK-NEXT: 	.type	dsolocal_func,%function
 ; CHECK-NEXT: 	.code	32
 ; CHECK-NEXT: dsolocal_func:
-; TODO: PIC codegen should emit a $local alias here
-; PIC-TODO-NEXT: .Ldsolocal_func$local:
+; PIC-NEXT: .Ldsolocal_func$local:
 ; CHECK-NEXT: 	.fnstart
 ; CHECK-NEXT: @ %bb.0:
 ; STATIC-NEXT: 	movw	r0, :lower16:dsolocal_func

diff  --git a/llvm/utils/UpdateTestChecks/asm.py b/llvm/utils/UpdateTestChecks/asm.py
index 821b2d0019075..7e3bfdc7eea33 100644
--- a/llvm/utils/UpdateTestChecks/asm.py
+++ b/llvm/utils/UpdateTestChecks/asm.py
@@ -24,6 +24,7 @@ class string:
 
 ASM_FUNCTION_ARM_RE = re.compile(
     r'^(?P<func>[0-9a-zA-Z_$]+):\n' # f: (name of function)
+    r'(?:\.L(?P=func)\$local:\n)?'  # drop .L<func>$local:
     r'\s+\.fnstart\n' # .fnstart
     r'(?P<body>.*?)' # (body of the function)
     r'^.Lfunc_end[0-9]+:', # .Lfunc_end0: or # -- End function


        


More information about the llvm-commits mailing list