mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-01 02:33:44 +00:00
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:
parent
178e0c41ce
commit
df2e425f2a
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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());
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user