mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Change the PassManager from a reference to a pointer.
The TargetPassManager's default constructor wants to initialize the PassManager to 'null'. But it's illegal to bind a null reference to a null l-value. Make the ivar a pointer instead. PR12468 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155902 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -136,22 +136,22 @@ TargetPassConfig *ARMBaseTargetMachine::createPassConfig(PassManagerBase &PM) {
|
||||
|
||||
bool ARMPassConfig::addPreISel() {
|
||||
if (TM->getOptLevel() != CodeGenOpt::None && EnableGlobalMerge)
|
||||
PM.add(createGlobalMergePass(TM->getTargetLowering()));
|
||||
PM->add(createGlobalMergePass(TM->getTargetLowering()));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ARMPassConfig::addInstSelector() {
|
||||
PM.add(createARMISelDag(getARMTargetMachine(), getOptLevel()));
|
||||
PM->add(createARMISelDag(getARMTargetMachine(), getOptLevel()));
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ARMPassConfig::addPreRegAlloc() {
|
||||
// FIXME: temporarily disabling load / store optimization pass for Thumb1.
|
||||
if (getOptLevel() != CodeGenOpt::None && !getARMSubtarget().isThumb1Only())
|
||||
PM.add(createARMLoadStoreOptimizationPass(true));
|
||||
PM->add(createARMLoadStoreOptimizationPass(true));
|
||||
if (getOptLevel() != CodeGenOpt::None && getARMSubtarget().isCortexA9())
|
||||
PM.add(createMLxExpansionPass());
|
||||
PM->add(createMLxExpansionPass());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -159,23 +159,23 @@ bool ARMPassConfig::addPreSched2() {
|
||||
// FIXME: temporarily disabling load / store optimization pass for Thumb1.
|
||||
if (getOptLevel() != CodeGenOpt::None) {
|
||||
if (!getARMSubtarget().isThumb1Only()) {
|
||||
PM.add(createARMLoadStoreOptimizationPass());
|
||||
PM->add(createARMLoadStoreOptimizationPass());
|
||||
printAndVerify("After ARM load / store optimizer");
|
||||
}
|
||||
if (getARMSubtarget().hasNEON())
|
||||
PM.add(createExecutionDependencyFixPass(&ARM::DPRRegClass));
|
||||
PM->add(createExecutionDependencyFixPass(&ARM::DPRRegClass));
|
||||
}
|
||||
|
||||
// Expand some pseudo instructions into multiple instructions to allow
|
||||
// proper scheduling.
|
||||
PM.add(createARMExpandPseudoPass());
|
||||
PM->add(createARMExpandPseudoPass());
|
||||
|
||||
if (getOptLevel() != CodeGenOpt::None) {
|
||||
if (!getARMSubtarget().isThumb1Only())
|
||||
addPass(IfConverterID);
|
||||
}
|
||||
if (getARMSubtarget().isThumb2())
|
||||
PM.add(createThumb2ITBlockPass());
|
||||
PM->add(createThumb2ITBlockPass());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -183,13 +183,13 @@ bool ARMPassConfig::addPreSched2() {
|
||||
bool ARMPassConfig::addPreEmitPass() {
|
||||
if (getARMSubtarget().isThumb2()) {
|
||||
if (!getARMSubtarget().prefers32BitThumb())
|
||||
PM.add(createThumb2SizeReductionPass());
|
||||
PM->add(createThumb2SizeReductionPass());
|
||||
|
||||
// Constant island pass work on unbundled instructions.
|
||||
addPass(UnpackMachineBundlesID);
|
||||
}
|
||||
|
||||
PM.add(createARMConstantIslandPass());
|
||||
PM->add(createARMConstantIslandPass());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user