diff options
author | Dan Gohman <djg@cray.com> | 2007-10-12 14:53:36 +0000 |
---|---|---|
committer | Dan Gohman <djg@cray.com> | 2007-10-12 14:53:36 +0000 |
commit | 36eb6b7103ccca77ac51754a2265340ce9a2a8d7 (patch) | |
tree | 2a34eb07eec2cc08392f9b32c6115299394eeaa0 /lib | |
parent | c68a8de07faba0881b25a8eb9346deced1e024fd (diff) | |
download | external_llvm-36eb6b7103ccca77ac51754a2265340ce9a2a8d7.zip external_llvm-36eb6b7103ccca77ac51754a2265340ce9a2a8d7.tar.gz external_llvm-36eb6b7103ccca77ac51754a2265340ce9a2a8d7.tar.bz2 |
Change the names used for internal labels to use the current
function symbol name instead of a codegen-assigned function
number.
Thanks Evan! :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/AsmPrinter.cpp | 38 | ||||
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 25 | ||||
-rw-r--r-- | lib/Target/Alpha/AlphaAsmPrinter.cpp | 8 | ||||
-rw-r--r-- | lib/Target/IA64/IA64AsmPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/Target/Mips/MipsAsmPrinter.cpp | 2 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 18 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcAsmPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/Target/X86/X86ATTAsmPrinter.cpp | 30 | ||||
-rw-r--r-- | lib/Target/X86/X86IntelAsmPrinter.cpp | 10 |
9 files changed, 70 insertions, 69 deletions
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 47a5345..e8ce0b7 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -35,7 +35,7 @@ AsmVerbose("asm-verbose", cl::Hidden, cl::desc("Add comments to directives.")); char AsmPrinter::ID = 0; AsmPrinter::AsmPrinter(std::ostream &o, TargetMachine &tm, const TargetAsmInfo *T) - : MachineFunctionPass((intptr_t)&ID), FunctionNumber(0), O(o), TM(tm), TAI(T) + : MachineFunctionPass((intptr_t)&ID), O(o), TM(tm), TAI(T) {} std::string AsmPrinter::getSectionForFunction(const Function &F) const { @@ -169,7 +169,6 @@ std::string AsmPrinter::getCurrentFunctionEHName(const MachineFunction *MF) { void AsmPrinter::SetupMachineFunction(MachineFunction &MF) { // What's my mangled name? CurrentFnName = Mang->getValueName(MF.getFunction()); - IncrementFunctionNumber(); } /// EmitConstantPool - Print to the current output stream assembly @@ -219,8 +218,9 @@ void AsmPrinter::EmitConstantPool(unsigned Alignment, const char *Section, SwitchToDataSection(Section); EmitAlignment(Alignment); for (unsigned i = 0, e = CP.size(); i != e; ++i) { - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_' - << CP[i].second << ":\t\t\t\t\t" << TAI->getCommentString() << " "; + O << TAI->getPrivateGlobalPrefix() << "CPI" << CP[i].second + << '_' << CurrentFnName + << ":\t\t\t\t\t" << TAI->getCommentString() << ' '; WriteTypeSymbolic(O, CP[i].first.getType(), 0) << '\n'; if (CP[i].first.isMachineConstantPoolEntry()) EmitMachineConstantPoolValue(CP[i].first.Val.MachineCPVal); @@ -293,10 +293,10 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI, // the assembler and linker the extents of the jump table object. The // second label is actually referenced by the code. if (const char *JTLabelPrefix = TAI->getJumpTableSpecialLabelPrefix()) - O << JTLabelPrefix << "JTI" << getFunctionNumber() << '_' << i << ":\n"; + O << JTLabelPrefix << "JTI" << i << '_' << CurrentFnName << ":\n"; - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << i << ":\n"; + O << TAI->getPrivateGlobalPrefix() << "JTI" << i + << '_' << CurrentFnName << ":\n"; for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) { O << JTEntryDirective << ' '; @@ -306,15 +306,15 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI, // If we're emitting non-PIC code, then emit the entries as direct // references to the target basic blocks. if (!EmittedSets.empty()) { - O << TAI->getPrivateGlobalPrefix() << getFunctionNumber() - << '_' << i << "_set_" << JTBBs[ii]->getNumber(); + O << TAI->getPrivateGlobalPrefix() << i + << '_' << "_set_" << JTBBs[ii]->getNumber() << '_' << CurrentFnName; } else if (IsPic) { printBasicBlockLabel(JTBBs[ii], false, false); // If the arch uses custom Jump Table directives, don't calc relative to // JT if (!HadJTEntryDirective) O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" - << getFunctionNumber() << '_' << i; + << i << '_' << CurrentFnName; } else { printBasicBlockLabel(JTBBs[ii], false, false); } @@ -1242,8 +1242,8 @@ bool AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, void AsmPrinter::printBasicBlockLabel(const MachineBasicBlock *MBB, bool printColon, bool printComment) const { - O << TAI->getPrivateGlobalPrefix() << "BB" << getFunctionNumber() << "_" - << MBB->getNumber(); + O << TAI->getPrivateGlobalPrefix() << "BB" << MBB->getNumber() << '_' + << CurrentFnName; if (printColon) O << ':'; if (printComment && MBB->getBasicBlock()) @@ -1259,10 +1259,10 @@ void AsmPrinter::printSetLabel(unsigned uid, return; O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix() - << getFunctionNumber() << '_' << uid << "_set_" << MBB->getNumber() << ','; + << uid << "_set_" << MBB->getNumber() << '_' << CurrentFnName << ','; printBasicBlockLabel(MBB, false, false); - O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << uid << '\n'; + O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << uid + << '_' << CurrentFnName << '\n'; } void AsmPrinter::printSetLabel(unsigned uid, unsigned uid2, @@ -1271,11 +1271,11 @@ void AsmPrinter::printSetLabel(unsigned uid, unsigned uid2, return; O << TAI->getSetDirective() << ' ' << TAI->getPrivateGlobalPrefix() - << getFunctionNumber() << '_' << uid << '_' << uid2 - << "_set_" << MBB->getNumber() << ','; + << uid << '_' << uid2 + << "_set_" << MBB->getNumber() << '_' << CurrentFnName << ','; printBasicBlockLabel(MBB, false, false); - O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << uid << '_' << uid2 << '\n'; + O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" << uid + << '_' << uid2 << '_' << CurrentFnName << '\n'; } /// printDataDirective - This method prints the asm directive for the diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index 9435cc1..b10399a 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -319,12 +319,12 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int opNum, break; } case MachineOperand::MO_ConstantPoolIndex: - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() - << '_' << MO.getConstantPoolIndex(); + O << TAI->getPrivateGlobalPrefix() << "CPI" << MO.getConstantPoolIndex() + << '_' << CurrentFnName; break; case MachineOperand::MO_JumpTableIndex: - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << MO.getJumpTableIndex(); + O << TAI->getPrivateGlobalPrefix() << "JTI" << MO.getJumpTableIndex() + << '_' << CurrentFnName; break; default: O << "<unknown operand type>"; abort (); break; @@ -652,8 +652,8 @@ void ARMAsmPrinter::printCPInstOperand(const MachineInstr *MI, int OpNo, // data itself. if (!strcmp(Modifier, "label")) { unsigned ID = MI->getOperand(OpNo).getImm(); - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() - << '_' << ID << ":\n"; + O << TAI->getPrivateGlobalPrefix() << "CPI" << ID + << '_' << CurrentFnName << ":\n"; } else { assert(!strcmp(Modifier, "cpentry") && "Unknown modifier for CPE"); unsigned CPI = MI->getOperand(OpNo).getConstantPoolIndex(); @@ -677,8 +677,8 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNo) { const MachineOperand &MO1 = MI->getOperand(OpNo); const MachineOperand &MO2 = MI->getOperand(OpNo+1); // Unique Id unsigned JTI = MO1.getJumpTableIndex(); - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << JTI << '_' << MO2.getImmedValue() << ":\n"; + O << TAI->getPrivateGlobalPrefix() << "JTI" << JTI + << '_' << MO2.getImmedValue() << '_' << CurrentFnName << ":\n"; const char *JTEntryDirective = TAI->getJumpTableDirective(); if (!JTEntryDirective) @@ -697,15 +697,16 @@ void ARMAsmPrinter::printJTBlockOperand(const MachineInstr *MI, int OpNo) { O << JTEntryDirective << ' '; if (UseSet) - O << TAI->getPrivateGlobalPrefix() << getFunctionNumber() - << '_' << JTI << '_' << MO2.getImmedValue() - << "_set_" << MBB->getNumber(); + O << TAI->getPrivateGlobalPrefix() << JTI + << '_' << MO2.getImmedValue() + << "_set_" << MBB->getNumber() + << CurrentFnName; else if (TM.getRelocationModel() == Reloc::PIC_) { printBasicBlockLabel(MBB, false, false); // If the arch uses custom Jump Table directives, don't calc relative to JT if (!TAI->getJumpTableDirective()) O << '-' << TAI->getPrivateGlobalPrefix() << "JTI" - << getFunctionNumber() << '_' << JTI << '_' << MO2.getImmedValue(); + << JTI << '_' << MO2.getImmedValue() << '_' << CurrentFnName; } else printBasicBlockLabel(MBB, false, false); if (i != e-1) diff --git a/lib/Target/Alpha/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AlphaAsmPrinter.cpp index 412f282..f726ff9 100644 --- a/lib/Target/Alpha/AlphaAsmPrinter.cpp +++ b/lib/Target/Alpha/AlphaAsmPrinter.cpp @@ -104,8 +104,8 @@ void AlphaAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) { return; case MachineOperand::MO_ConstantPoolIndex: - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_" - << MO.getConstantPoolIndex(); + O << TAI->getPrivateGlobalPrefix() << "CPI" << MO.getConstantPoolIndex() + << '_' << CurrentFnName; return; case MachineOperand::MO_ExternalSymbol: @@ -121,8 +121,8 @@ void AlphaAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) { } case MachineOperand::MO_JumpTableIndex: - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << MO.getJumpTableIndex(); + O << TAI->getPrivateGlobalPrefix() << "JTI" << MO.getJumpTableIndex() + << '_' << CurrentFnName; return; default: diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp index 08a27d4..d7c8226 100644 --- a/lib/Target/IA64/IA64AsmPrinter.cpp +++ b/lib/Target/IA64/IA64AsmPrinter.cpp @@ -179,8 +179,8 @@ void IA64AsmPrinter::printOp(const MachineOperand &MO, return; case MachineOperand::MO_ConstantPoolIndex: { O << "@gprel(" << TAI->getPrivateGlobalPrefix() - << "CPI" << getFunctionNumber() << "_" - << MO.getConstantPoolIndex() << ")"; + << "CPI" << MO.getConstantPoolIndex() << '_' + << CurrentFnName << ")"; return; } diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp index cd5c1a3..ff02d43 100644 --- a/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/lib/Target/Mips/MipsAsmPrinter.cpp @@ -363,7 +363,7 @@ printOperand(const MachineInstr *MI, int opNum) case MachineOperand::MO_ConstantPoolIndex: O << TAI->getPrivateGlobalPrefix() << "CPI" - << getFunctionNumber() << "_" << MO.getConstantPoolIndex(); + << MO.getConstantPoolIndex() << '_' << CurrentFnName; break; default: diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 9ff41ca..a75136b 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -164,7 +164,7 @@ namespace { O << "lo16("; printOp(MI->getOperand(OpNo)); if (TM.getRelocationModel() == Reloc::PIC_) - O << "-\"L" << getFunctionNumber() << "$pb\")"; + O << "-\"L" "pb$" << CurrentFnName << "\")"; else O << ')'; } @@ -208,8 +208,8 @@ namespace { O << (int)MI->getOperand(OpNo).getImmedValue()*4; } void printPICLabel(const MachineInstr *MI, unsigned OpNo) { - O << "\"L" << getFunctionNumber() << "$pb\"\n"; - O << "\"L" << getFunctionNumber() << "$pb\":"; + O << "\"L" "pb$" << CurrentFnName << "\"\n"; + O << "\"L" "pb$" << CurrentFnName << "\":"; } void printSymbolHi(const MachineInstr *MI, unsigned OpNo) { if (MI->getOperand(OpNo).isImmediate()) { @@ -218,7 +218,7 @@ namespace { if (Subtarget.isDarwin()) O << "ha16("; printOp(MI->getOperand(OpNo)); if (TM.getRelocationModel() == Reloc::PIC_) - O << "-\"L" << getFunctionNumber() << "$pb\""; + O << "-\"L" "pb$" << CurrentFnName << "\""; if (Subtarget.isDarwin()) O << ')'; else @@ -232,7 +232,7 @@ namespace { if (Subtarget.isDarwin()) O << "lo16("; printOp(MI->getOperand(OpNo)); if (TM.getRelocationModel() == Reloc::PIC_) - O << "-\"L" << getFunctionNumber() << "$pb\""; + O << "-\"L" "pb$" << CurrentFnName << "\""; if (Subtarget.isDarwin()) O << ')'; else @@ -362,13 +362,13 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) { printBasicBlockLabel(MO.getMachineBasicBlock()); return; case MachineOperand::MO_JumpTableIndex: - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << MO.getJumpTableIndex(); + O << TAI->getPrivateGlobalPrefix() << "JTI" << MO.getJumpTableIndex() + << '_' << CurrentFnName; // FIXME: PIC relocation model return; case MachineOperand::MO_ConstantPoolIndex: - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() - << '_' << MO.getConstantPoolIndex(); + O << TAI->getPrivateGlobalPrefix() << "CPI" << MO.getConstantPoolIndex() + << '_' << CurrentFnName; return; case MachineOperand::MO_ExternalSymbol: // Computing the address of an external symbol, not calling it. diff --git a/lib/Target/Sparc/SparcAsmPrinter.cpp b/lib/Target/Sparc/SparcAsmPrinter.cpp index 98d59ee..c9c1815 100644 --- a/lib/Target/Sparc/SparcAsmPrinter.cpp +++ b/lib/Target/Sparc/SparcAsmPrinter.cpp @@ -164,8 +164,8 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum) { O << MO.getSymbolName(); break; case MachineOperand::MO_ConstantPoolIndex: - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_" - << MO.getConstantPoolIndex(); + O << TAI->getPrivateGlobalPrefix() << "CPI" << MO.getConstantPoolIndex() + << '_' << CurrentFnName; break; default: O << "<unknown operand type>"; abort (); break; diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index 0655877..4a52269 100644 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -31,14 +31,14 @@ using namespace llvm; STATISTIC(EmittedInsts, "Number of machine instrs printed"); -static std::string computePICLabel(unsigned FnNum, +static std::string computePICLabel(const std::string &FnName, const TargetAsmInfo *TAI, const X86Subtarget* Subtarget) { std::string label; if (Subtarget->isTargetDarwin()) - label = "\"L" + utostr_32(FnNum) + "$pb\""; + label = "\"L" "pb$" + FnName + "\""; else if (Subtarget->isTargetELF()) - label = ".Lllvm$" + utostr_32(FnNum) + "$piclabel"; + label = ".Lllvm$piclabel$" + FnName; else assert(0 && "Don't know how to print PIC label!\n"); @@ -236,13 +236,13 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, case MachineOperand::MO_JumpTableIndex: { bool isMemOp = Modifier && !strcmp(Modifier, "mem"); if (!isMemOp) O << '$'; - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << "_" - << MO.getJumpTableIndex(); + O << TAI->getPrivateGlobalPrefix() << "JTI" << MO.getJumpTableIndex() + << '_' << CurrentFnName; if (TM.getRelocationModel() == Reloc::PIC_) { if (Subtarget->isPICStyleStub()) - O << "-\"" << TAI->getPrivateGlobalPrefix() << getFunctionNumber() - << "$pb\""; + O << "-\"" << TAI->getPrivateGlobalPrefix() << "pb$" << CurrentFnName + << "\""; else if (Subtarget->isPICStyleGOT()) O << "@GOTOFF"; } @@ -254,13 +254,13 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, case MachineOperand::MO_ConstantPoolIndex: { bool isMemOp = Modifier && !strcmp(Modifier, "mem"); if (!isMemOp) O << '$'; - O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_" - << MO.getConstantPoolIndex(); + O << TAI->getPrivateGlobalPrefix() << "CPI" << MO.getConstantPoolIndex() + << '_' << CurrentFnName; if (TM.getRelocationModel() == Reloc::PIC_) { if (Subtarget->isPICStyleStub()) - O << "-\"" << TAI->getPrivateGlobalPrefix() << getFunctionNumber() - << "$pb\""; + O << "-\"" << TAI->getPrivateGlobalPrefix() << "pb$" << CurrentFnName + << "\""; else if (Subtarget->isPICStyleGOT()) O << "@GOTOFF"; } @@ -317,8 +317,8 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, } if (!isCallOp && TM.getRelocationModel() == Reloc::PIC_) - O << "-\"" << TAI->getPrivateGlobalPrefix() << getFunctionNumber() - << "$pb\""; + O << "-\"" << TAI->getPrivateGlobalPrefix() << "pb$" << CurrentFnName + << "\""; } else { if (GV->hasDLLImportLinkage()) { O << "__imp_"; @@ -418,7 +418,7 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, // popl %some_register // addl $_GLOBAL_ADDRESS_TABLE_ + [.-piclabel], %some_register O << " + [.-" - << computePICLabel(getFunctionNumber(), TAI, Subtarget) << "]"; + << computePICLabel(CurrentFnName, TAI, Subtarget) << "]"; if (isCallOp) O << "@PLT"; @@ -498,7 +498,7 @@ void X86ATTAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op, } void X86ATTAsmPrinter::printPICLabel(const MachineInstr *MI, unsigned Op) { - std::string label = computePICLabel(getFunctionNumber(), TAI, Subtarget); + std::string label = computePICLabel(CurrentFnName, TAI, Subtarget); O << label << "\n" << label << ":"; } diff --git a/lib/Target/X86/X86IntelAsmPrinter.cpp b/lib/Target/X86/X86IntelAsmPrinter.cpp index bd8886c..642045b 100644 --- a/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -140,15 +140,15 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO, case MachineOperand::MO_JumpTableIndex: { bool isMemOp = Modifier && !strcmp(Modifier, "mem"); if (!isMemOp) O << "OFFSET "; - O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << "_" << MO.getJumpTableIndex(); + O << TAI->getPrivateGlobalPrefix() << "JTI" << MO.getJumpTableIndex() + << '_' << CurrentFnName; return; } case MachineOperand::MO_ConstantPoolIndex: { bool isMemOp = Modifier && !strcmp(Modifier, "mem"); if (!isMemOp) O << "OFFSET "; O << "[" << TAI->getPrivateGlobalPrefix() << "CPI" - << getFunctionNumber() << "_" << MO.getConstantPoolIndex(); + << MO.getConstantPoolIndex() << '_' << CurrentFnName; int Offset = MO.getOffset(); if (Offset > 0) O << " + " << Offset; @@ -236,8 +236,8 @@ void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op, } void X86IntelAsmPrinter::printPICLabel(const MachineInstr *MI, unsigned Op) { - O << "\"L" << getFunctionNumber() << "$pb\"\n"; - O << "\"L" << getFunctionNumber() << "$pb\":"; + O << "\"L" "pb$" << CurrentFnName << "\"\n"; + O << "\"L" "pb$" << CurrentFnName << "\":"; } bool X86IntelAsmPrinter::printAsmMRegister(const MachineOperand &MO, |