mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-09 10:31:14 +00:00
Add an experimental option to run gep-splitting and no-load GVN
just before codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89439 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae079c250f
commit
2e7e94826a
@ -66,6 +66,11 @@ static cl::opt<cl::boolOrDefault>
|
||||
EnableFastISelOption("fast-isel", cl::Hidden,
|
||||
cl::desc("Enable the \"fast\" instruction selector"));
|
||||
|
||||
// Enable or disable an experimental optimization to split GEPs
|
||||
// and run a special GVN pass which does not examine loads, in
|
||||
// an effort to factor out redundancy implicit in complex GEPs.
|
||||
static cl::opt<bool> EnableSplitGEPGVN("split-gep-gvn", cl::Hidden,
|
||||
cl::desc("Split GEPs and run no-load GVN"));
|
||||
|
||||
LLVMTargetMachine::LLVMTargetMachine(const Target &T,
|
||||
const std::string &TargetTriple)
|
||||
@ -223,6 +228,12 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
|
||||
CodeGenOpt::Level OptLevel) {
|
||||
// Standard LLVM-Level Passes.
|
||||
|
||||
// Optionally, tun split-GEPs and no-load GVN.
|
||||
if (EnableSplitGEPGVN) {
|
||||
PM.add(createGEPSplitterPass());
|
||||
PM.add(createGVNPass(/*NoPRE=*/false, /*NoLoads=*/true));
|
||||
}
|
||||
|
||||
// Run loop strength reduction before anything else.
|
||||
if (OptLevel != CodeGenOpt::None && !DisableLSR) {
|
||||
PM.add(createLoopStrengthReducePass(getTargetLowering()));
|
||||
|
Loading…
Reference in New Issue
Block a user