Use the correct func begin symbol in all places in ppc.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 5 Mar 2015 19:47:50 +0000 (19:47 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 5 Mar 2015 19:47:50 +0000 (19:47 +0000)
I missed an occurrence of the old symbol in my previous patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231398 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/PowerPC/PPCAsmPrinter.cpp
test/CodeGen/PowerPC/ppc64-linux-func-size.ll
test/CodeGen/PowerPC/ppc64-toc.ll

index 2a132e561322724fd71d38b211a924b0479ce128..569863315ac8ac0645d7949241ebbf37bb038d0b 100644 (file)
@@ -556,13 +556,7 @@ void AsmPrinter::EmitFunctionHeader() {
     OutStreamer.EmitLabel(DeadBlockSyms[i]);
   }
 
-  bool NeedsLocalForSize = MAI->needsLocalForSize();
-  if (!MMI->getLandingPads().empty() || MMI->hasDebugInfo() ||
-      NeedsLocalForSize) {
-    CurrentFnBegin = createTempSymbol("func_begin", getFunctionNumber());
-    if (NeedsLocalForSize)
-      CurrentFnSymForSize = CurrentFnBegin;
-
+  if (CurrentFnBegin) {
     if (MAI->useAssignmentForEHBegin()) {
       MCSymbol *CurPos = OutContext.CreateTempSymbol();
       OutStreamer.EmitLabel(CurPos);
@@ -1127,6 +1121,14 @@ void AsmPrinter::SetupMachineFunction(MachineFunction &MF) {
   // Get the function symbol.
   CurrentFnSym = getSymbol(MF.getFunction());
   CurrentFnSymForSize = CurrentFnSym;
+  CurrentFnBegin = nullptr;
+  bool NeedsLocalForSize = MAI->needsLocalForSize();
+  if (!MMI->getLandingPads().empty() || MMI->hasDebugInfo() ||
+      NeedsLocalForSize) {
+    CurrentFnBegin = createTempSymbol("func_begin", getFunctionNumber());
+    if (NeedsLocalForSize)
+      CurrentFnSymForSize = CurrentFnBegin;
+  }
 
   if (isVerbose())
     LI = &getAnalysis<MachineLoopInfo>();
index 93bf99898d0a358824c7ac409e7afd2738eccde5..02421a58be1d2f4841c23741734ee3bf32b284bd 100644 (file)
@@ -1068,8 +1068,7 @@ void PPCLinuxAsmPrinter::EmitFunctionEntryLabel() {
   OutStreamer.SwitchSection(Section);
   OutStreamer.EmitLabel(CurrentFnSym);
   OutStreamer.EmitValueToAlignment(8);
-  MCSymbol *Symbol1 = 
-    OutContext.GetOrCreateSymbol(".L." + Twine(CurrentFnSym->getName()));
+  MCSymbol *Symbol1 = CurrentFnSymForSize;
   // Generates a R_PPC64_ADDR64 (from FK_DATA_8) relocation for the function
   // entry point.
   OutStreamer.EmitValue(MCSymbolRefExpr::Create(Symbol1, OutContext),
index 04e0dfcd05c564fb0305496e60fefd7310706e39..fb017bc224baf725b79b641ea984715c25d9b249 100644 (file)
@@ -3,11 +3,11 @@
 ; CHECK:      .section .opd,"aw",@progbits
 ; CHECK-NEXT: test1:
 ; CHECK-NEXT:  .align 3
-; CHECK-NEXT:  .quad .L.test1
+; CHECK-NEXT:  .quad .L[[BEGIN:.*]]
 ; CHECK-NEXT:  .quad .TOC.@tocbase
 ; CHECK-NEXT:   .quad 0
 ; CHECK-NEXT:  .text
-; CHECK-NEXT: .L[[BEGIN:.*]]:
+; CHECK-NEXT: .L[[BEGIN]]:
 
 define i32 @test1(i32 %a) nounwind {
 entry:
index 86bb9cedea2f75fecc41d20faf8227999a183c3d..7500ed606636a395bab0185a15611a1de59e5db7 100644 (file)
@@ -10,10 +10,11 @@ define i64 @access_int64(i64 %a) nounwind readonly {
 entry:
 ; CHECK-LABEL: access_int64:
 ; CHECK-NEXT: .align  3
-; CHECK-NEXT: .quad   .L.access_int64
+; CHECK-NEXT: .quad   .L[[BEGIN:.*]]
 ; CHECK-NEXT: .quad   .TOC.@tocbase
 ; CHECK-NEXT: .quad   0
 ; CHECK-NEXT: .text
+; CHECK-NEXT: .L[[BEGIN]]:
   %0 = load i64, i64* @number64, align 8
 ; CHECK: ld {{[0-9]+}}, .LC{{[0-9]+}}@toc(2)
   %cmp = icmp eq i64 %0, %a