From 2f76abe7d7d21150ebe3f9a60a83b26a58999f70 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 5 Mar 2015 19:47:50 +0000 Subject: [PATCH] Use the correct func begin symbol in all places in ppc. 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 | 16 +++++++++------- lib/Target/PowerPC/PPCAsmPrinter.cpp | 3 +-- test/CodeGen/PowerPC/ppc64-linux-func-size.ll | 4 ++-- test/CodeGen/PowerPC/ppc64-toc.ll | 3 ++- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 2a132e56132..569863315ac 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -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(); diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 93bf99898d0..02421a58be1 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -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), diff --git a/test/CodeGen/PowerPC/ppc64-linux-func-size.ll b/test/CodeGen/PowerPC/ppc64-linux-func-size.ll index 04e0dfcd05c..fb017bc224b 100644 --- a/test/CodeGen/PowerPC/ppc64-linux-func-size.ll +++ b/test/CodeGen/PowerPC/ppc64-linux-func-size.ll @@ -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: diff --git a/test/CodeGen/PowerPC/ppc64-toc.ll b/test/CodeGen/PowerPC/ppc64-toc.ll index 86bb9cedea2..7500ed60663 100644 --- a/test/CodeGen/PowerPC/ppc64-toc.ll +++ b/test/CodeGen/PowerPC/ppc64-toc.ll @@ -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 -- 2.34.1