diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-26 06:42:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-26 06:42:44 +0000 |
commit | 4db603f93bf3978f60e858c167045ca07d9cfca3 (patch) | |
tree | 6efaca60aefb3f2efea66dbd48577120cde123d0 /llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | 72343706c1e31a10ff10cc8b2ee071ce6395f8ff (diff) | |
download | bcm5719-llvm-4db603f93bf3978f60e858c167045ca07d9cfca3.tar.gz bcm5719-llvm-4db603f93bf3978f60e858c167045ca07d9cfca3.zip |
Now that printPICJumpTableSetLabel is not overloaded,
inline it into its only caller, allowing us to simplify it
and hoist bits out of the loop.
llvm-svn: 94528
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 6676289e1a0..a91ab22ce1b 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -505,8 +505,8 @@ void AsmPrinter::EmitJumpTableInfo(MachineFunction &MF) { EmitAlignment(Log2_32(MJTI->getEntryAlignment(*TM.getTargetData()))); - for (unsigned i = 0, e = JT.size(); i != e; ++i) { - const std::vector<MachineBasicBlock*> &JTBBs = JT[i].MBBs; + for (unsigned JTI = 0, e = JT.size(); JTI != e; ++JTI) { + const std::vector<MachineBasicBlock*> &JTBBs = JT[JTI].MBBs; // If this jump table was deleted, ignore it. if (JTBBs.empty()) continue; @@ -516,11 +516,19 @@ void AsmPrinter::EmitJumpTableInfo(MachineFunction &MF) { // relocations the assembler will generate for the jump table. if (MJTI->getEntryKind() == MachineJumpTableInfo::EK_LabelDifference32 && MAI->getSetDirective()) { - SmallPtrSet<MachineBasicBlock*, 16> EmittedSets; - for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) - if (EmittedSets.insert(JTBBs[ii])) - printPICJumpTableSetLabel(i, JTBBs[ii]); - } + SmallPtrSet<const MachineBasicBlock*, 16> EmittedSets; + const TargetLowering *TLI = TM.getTargetLowering(); + const MCExpr *Base = TLI->getPICJumpTableRelocBaseExpr(&MF, JTI, + OutContext); + for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) { + const MachineBasicBlock *MBB = JTBBs[ii]; + if (!EmittedSets.insert(MBB)) continue; + + O << MAI->getSetDirective() << ' ' + << *GetJTSetSymbol(JTI, MBB->getNumber()) << ',' + << *MBB->getSymbol(OutContext) << '-' << *Base << '\n'; + } + } // On some targets (e.g. Darwin) we want to emit two consequtive labels // before each jump table. The first label is never referenced, but tells @@ -529,12 +537,12 @@ void AsmPrinter::EmitJumpTableInfo(MachineFunction &MF) { if (JTInDiffSection && MAI->getLinkerPrivateGlobalPrefix()[0]) // FIXME: This doesn't have to have any specific name, just any randomly // named and numbered 'l' label would work. Simplify GetJTISymbol. - OutStreamer.EmitLabel(GetJTISymbol(i, true)); + OutStreamer.EmitLabel(GetJTISymbol(JTI, true)); - OutStreamer.EmitLabel(GetJTISymbol(i)); + OutStreamer.EmitLabel(GetJTISymbol(JTI)); for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) - EmitJumpTableEntry(MJTI, JTBBs[ii], i); + EmitJumpTableEntry(MJTI, JTBBs[ii], JTI); } } @@ -1542,18 +1550,6 @@ void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock *MBB) const { } } -/// printPICJumpTableSetLabel - This method prints a set label for the -/// specified MachineBasicBlock for a jumptable entry. -void AsmPrinter::printPICJumpTableSetLabel(unsigned uid, - const MachineBasicBlock *MBB) const { - const TargetLowering *TLI = TM.getTargetLowering(); - O << MAI->getSetDirective() << ' ' << MAI->getPrivateGlobalPrefix() - << *GetJTSetSymbol(uid, MBB->getNumber()) << ',' - << *MBB->getSymbol(OutContext) << '-' - << *TLI->getPICJumpTableRelocBaseExpr(MF, uid, OutContext) - << '\n'; -} - void AsmPrinter::printVisibility(MCSymbol *Sym, unsigned Visibility) const { MCSymbolAttr Attr = MCSA_Invalid; |