diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-02-24 08:30:20 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-02-24 08:30:20 +0000 |
commit | 57f0db833dc30404f1f5d28b23df326e520698ec (patch) | |
tree | 543149bc13d79de8e79f707ddbf23da88f704425 /lib/Target/Sparc | |
parent | 3d8bde8dfb2177dabbc6225a451889305d3756dd (diff) |
Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.
- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.
- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc')
-rw-r--r-- | lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp | 17 | ||||
-rw-r--r-- | lib/Target/Sparc/Sparc.h | 3 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcTargetMachine.cpp | 2 |
3 files changed, 13 insertions, 9 deletions
diff --git a/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp b/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp index f720d47570..80976bb259 100644 --- a/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp +++ b/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp @@ -40,17 +40,17 @@ using namespace llvm; STATISTIC(EmittedInsts, "Number of machine instrs printed"); namespace { - struct VISIBILITY_HIDDEN SparcAsmPrinter : public AsmPrinter { - SparcAsmPrinter(raw_ostream &O, TargetMachine &TM, const TargetAsmInfo *T) - : AsmPrinter(O, TM, T) { - } - + class VISIBILITY_HIDDEN SparcAsmPrinter : public AsmPrinter { /// We name each basic block in a Function with a unique number, so /// that we can consistently refer to them later. This is cleared /// at the beginning of each call to runOnMachineFunction(). /// typedef std::map<const Value *, unsigned> ValueMapTy; ValueMapTy NumberForBB; + public: + SparcAsmPrinter(raw_ostream &O, TargetMachine &TM, + const TargetAsmInfo *T, bool F) + : AsmPrinter(O, TM, T, F) {} virtual const char *getPassName() const { return "Sparc Assembly Printer"; @@ -81,14 +81,17 @@ namespace { /// regardless of whether the function is in SSA form. /// FunctionPass *llvm::createSparcCodePrinterPass(raw_ostream &o, - TargetMachine &tm) { - return new SparcAsmPrinter(o, tm, tm.getTargetAsmInfo()); + TargetMachine &tm, + bool fast) { + return new SparcAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); } /// runOnMachineFunction - This uses the printInstruction() /// method to print assembly for each instruction. /// bool SparcAsmPrinter::runOnMachineFunction(MachineFunction &MF) { + this->MF = &MF; + SetupMachineFunction(MF); // Print out constants referenced by the function diff --git a/lib/Target/Sparc/Sparc.h b/lib/Target/Sparc/Sparc.h index baac8f0159..c48118a0f1 100644 --- a/lib/Target/Sparc/Sparc.h +++ b/lib/Target/Sparc/Sparc.h @@ -24,7 +24,8 @@ namespace llvm { class raw_ostream; FunctionPass *createSparcISelDag(SparcTargetMachine &TM); - FunctionPass *createSparcCodePrinterPass(raw_ostream &OS, TargetMachine &TM); + FunctionPass *createSparcCodePrinterPass(raw_ostream &OS, + TargetMachine &TM, bool Fast); FunctionPass *createSparcDelaySlotFillerPass(TargetMachine &TM); FunctionPass *createSparcFPMoverPass(TargetMachine &TM); } // end namespace llvm; diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp index 21c4205b37..784800fd92 100644 --- a/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/lib/Target/Sparc/SparcTargetMachine.cpp @@ -85,6 +85,6 @@ bool SparcTargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { bool SparcTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, raw_ostream &Out) { // Output assembly language. - PM.add(createSparcCodePrinterPass(Out, *this)); + PM.add(createSparcCodePrinterPass(Out, *this, Fast)); return false; } |