The DarwinAsmPrinter need not check for isDarwin. createPPCAsmPrinterPass

should create the right asmprinter subclass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30542 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-09-20 17:12:19 +00:00
parent dadceedbdb
commit 4da1c82f72
3 changed files with 15 additions and 14 deletions

View File

@ -26,8 +26,8 @@ class MachineCodeEmitter;
FunctionPass *createPPCBranchSelectionPass();
FunctionPass *createPPCISelDag(PPCTargetMachine &TM);
FunctionPass *createDarwinCodePrinterPass(std::ostream &OS,
PPCTargetMachine &TM);
FunctionPass *createPPCAsmPrinterPass(std::ostream &OS,
PPCTargetMachine &TM);
FunctionPass *createPPCCodeEmitterPass(PPCTargetMachine &TM,
MachineCodeEmitter &MCE);
void addPPCMachOObjectWriterPass(FunctionPassManager &FPM, std::ostream &o,

View File

@ -270,15 +270,6 @@ namespace {
};
} // end of anonymous namespace
/// createDarwinCodePrinterPass - Returns a pass that prints the PPC assembly
/// code for a MachineFunction to the given output stream, in a format that the
/// Darwin assembler can deal with.
///
FunctionPass *llvm::createDarwinCodePrinterPass(std::ostream &o,
PPCTargetMachine &tm) {
return new DarwinAsmPrinter(o, tm, tm.getTargetAsmInfo());
}
// Include the auto-generated portion of the assembly writer
#include "PPCGenAsmWriter.inc"
@ -639,10 +630,20 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
// implementation of multiple entry points). If this doesn't occur, the
// linker can safely perform dead code stripping. Since LLVM never generates
// code that does this, it is always safe to set.
if (Subtarget.isDarwin())
O << "\t.subsections_via_symbols\n";
O << "\t.subsections_via_symbols\n";
AsmPrinter::doFinalization(M);
return false; // success
}
/// createDarwinCodePrinterPass - Returns a pass that prints the PPC assembly
/// code for a MachineFunction to the given output stream, in a format that the
/// Darwin assembler can deal with.
///
FunctionPass *llvm::createPPCAsmPrinterPass(std::ostream &o,
PPCTargetMachine &tm) {
return new DarwinAsmPrinter(o, tm, tm.getTargetAsmInfo());
}

View File

@ -122,7 +122,7 @@ bool PPCTargetMachine::addPreEmitPass(FunctionPassManager &PM, bool Fast) {
bool PPCTargetMachine::addAssemblyEmitter(FunctionPassManager &PM, bool Fast,
std::ostream &Out) {
PM.add(createDarwinCodePrinterPass(Out, *this));
PM.add(createPPCAsmPrinterPass(Out, *this));
return false;
}