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/CellSPU | |
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/CellSPU')
-rw-r--r-- | lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp | 30 | ||||
-rw-r--r-- | lib/Target/CellSPU/SPU.h | 4 | ||||
-rw-r--r-- | lib/Target/CellSPU/SPUTargetMachine.cpp | 2 |
3 files changed, 18 insertions, 18 deletions
diff --git a/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp b/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp index e9b3fc2d26..474a8ad3a4 100644 --- a/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp +++ b/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp @@ -45,13 +45,12 @@ namespace { const std::string bss_section(".bss"); - struct VISIBILITY_HIDDEN SPUAsmPrinter : public AsmPrinter { + class VISIBILITY_HIDDEN SPUAsmPrinter : public AsmPrinter { std::set<std::string> FnStubs, GVStubs; - - SPUAsmPrinter(raw_ostream &O, TargetMachine &TM, const TargetAsmInfo *T) : - AsmPrinter(O, TM, T) - { - } + public: + SPUAsmPrinter(raw_ostream &O, TargetMachine &TM, + const TargetAsmInfo *T, bool F) : + AsmPrinter(O, TM, T, F) {} virtual const char *getPassName() const { return "STI CBEA SPU Assembly Printer"; @@ -285,17 +284,13 @@ namespace { }; /// LinuxAsmPrinter - SPU assembly printer, customized for Linux - struct VISIBILITY_HIDDEN LinuxAsmPrinter : public SPUAsmPrinter { - + class VISIBILITY_HIDDEN LinuxAsmPrinter : public SPUAsmPrinter { DwarfWriter *DW; MachineModuleInfo *MMI; - + public: LinuxAsmPrinter(raw_ostream &O, SPUTargetMachine &TM, - const TargetAsmInfo *T) : - SPUAsmPrinter(O, TM, T), - DW(0), - MMI(0) - { } + const TargetAsmInfo *T, bool F) + : SPUAsmPrinter(O, TM, T, F), DW(0), MMI(0) {} virtual const char *getPassName() const { return "STI CBEA SPU Assembly Printer"; @@ -427,6 +422,8 @@ void SPUAsmPrinter::printMachineInstruction(const MachineInstr *MI) { bool LinuxAsmPrinter::runOnMachineFunction(MachineFunction &MF) { + this->MF = &MF; + SetupMachineFunction(MF); O << "\n\n"; @@ -613,6 +610,7 @@ bool LinuxAsmPrinter::doFinalization(Module &M) { /// that the Linux SPU assembler can deal with. /// FunctionPass *llvm::createSPUAsmPrinterPass(raw_ostream &o, - SPUTargetMachine &tm) { - return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo()); + SPUTargetMachine &tm, + bool fast) { + return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); } diff --git a/lib/Target/CellSPU/SPU.h b/lib/Target/CellSPU/SPU.h index a6a911067f..a7a9a77182 100644 --- a/lib/Target/CellSPU/SPU.h +++ b/lib/Target/CellSPU/SPU.h @@ -23,7 +23,9 @@ namespace llvm { class raw_ostream; FunctionPass *createSPUISelDag(SPUTargetMachine &TM); - FunctionPass *createSPUAsmPrinterPass(raw_ostream &o, SPUTargetMachine &tm); + FunctionPass *createSPUAsmPrinterPass(raw_ostream &o, + SPUTargetMachine &tm, + bool fast); /*--== Utility functions/predicates/etc used all over the place: --==*/ //! Predicate test for a signed 10-bit value diff --git a/lib/Target/CellSPU/SPUTargetMachine.cpp b/lib/Target/CellSPU/SPUTargetMachine.cpp index 217da2c9ff..ba5d2f2507 100644 --- a/lib/Target/CellSPU/SPUTargetMachine.cpp +++ b/lib/Target/CellSPU/SPUTargetMachine.cpp @@ -90,6 +90,6 @@ SPUTargetMachine::addInstSelector(PassManagerBase &PM, bool Fast) bool SPUTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, raw_ostream &Out) { - PM.add(createSPUAsmPrinterPass(Out, *this)); + PM.add(createSPUAsmPrinterPass(Out, *this, Fast)); return false; } |