Add a new option to indicate we want the code generator to emit code quickly,

not spending tons of time microoptimizing it.  This is useful for an -O0
style of build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24235 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-11-08 02:12:47 +00:00
parent 178e0c41ce
commit df2e425f2a
3 changed files with 9 additions and 7 deletions

View File

@ -143,11 +143,12 @@ public:
/// addPassesToEmitFile - Add passes to the specified pass manager to get /// addPassesToEmitFile - Add passes to the specified pass manager to get
/// the specified file emitted. Typically this will involve several steps of /// the specified file emitted. Typically this will involve several steps of
/// code generation. This method should return true if emission of this file /// code generation. If Fast is set to true, the code generator should emit
/// type is not supported. /// code as fast as possible, without regard for compile time. This method
/// should return true if emission of this file type is not supported.
/// ///
virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out, virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out,
CodeGenFileType FileType) { CodeGenFileType FileType, bool Fast) {
return true; return true;
} }

View File

@ -77,11 +77,12 @@ PPCTargetMachine::PPCTargetMachine(const Module &M, IntrinsicLowering *IL,
/// ///
bool PPCTargetMachine::addPassesToEmitFile(PassManager &PM, bool PPCTargetMachine::addPassesToEmitFile(PassManager &PM,
std::ostream &Out, std::ostream &Out,
CodeGenFileType FileType) { CodeGenFileType FileType,
bool Fast) {
if (FileType != TargetMachine::AssemblyFile) return true; if (FileType != TargetMachine::AssemblyFile) return true;
// Run loop strength reduction before anything else. // Run loop strength reduction before anything else.
PM.add(createLoopStrengthReducePass()); if (!Fast) PM.add(createLoopStrengthReducePass());
// FIXME: Implement efficient support for garbage collection intrinsics. // FIXME: Implement efficient support for garbage collection intrinsics.
PM.add(createLowerGCPass()); PM.add(createLowerGCPass());
@ -90,7 +91,7 @@ bool PPCTargetMachine::addPassesToEmitFile(PassManager &PM,
PM.add(createLowerInvokePass()); PM.add(createLowerInvokePass());
// Clean up after other passes, e.g. merging critical edges. // Clean up after other passes, e.g. merging critical edges.
PM.add(createCFGSimplificationPass()); if (!Fast) PM.add(createCFGSimplificationPass());
// FIXME: Implement the switch instruction in the instruction selector! // FIXME: Implement the switch instruction in the instruction selector!
PM.add(createLowerSwitchPass()); PM.add(createLowerSwitchPass());

View File

@ -53,7 +53,7 @@ public:
static unsigned getModuleMatchQuality(const Module &M); static unsigned getModuleMatchQuality(const Module &M);
virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out, virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out,
CodeGenFileType FileType); CodeGenFileType FileType, bool Fast);
bool addPassesToEmitMachineCode(FunctionPassManager &PM, bool addPassesToEmitMachineCode(FunctionPassManager &PM,
MachineCodeEmitter &MCE); MachineCodeEmitter &MCE);