AMDGPU: Run AMDGPUCodeGenPrepare after inlining

With leaf functions, this makes nonsensical decisions
based on the uniformity of the arguments.

llvm-svn: 293525
This commit is contained in:
Matt Arsenault 2017-01-30 18:40:29 +00:00
parent 373db5ba6c
commit 0c3293844b
1 changed files with 9 additions and 9 deletions

View File

@ -367,7 +367,6 @@ public:
ScheduleDAGInstrs *
createMachineScheduler(MachineSchedContext *C) const override;
void addIRPasses() override;
bool addPreISel() override;
void addMachineSSAOptimization() override;
bool addILPOpts() override;
@ -433,10 +432,18 @@ void AMDGPUPassConfig::addIRPasses() {
// without ever running any passes on the second.
addPass(createBarrierNoopPass());
const AMDGPUTargetMachine &TM = getAMDGPUTargetMachine();
if (TM.getTargetTriple().getArch() == Triple::amdgcn) {
// TODO: May want to move later or split into an early and late one.
addPass(createAMDGPUCodeGenPreparePass(
static_cast<const GCNTargetMachine *>(&TM)));
}
// Handle uses of OpenCL image2d_t, image3d_t and sampler_t arguments.
addPass(createAMDGPUOpenCLImageTypeLoweringPass());
const AMDGPUTargetMachine &TM = getAMDGPUTargetMachine();
if (TM.getOptLevel() > CodeGenOpt::None) {
addPass(createAMDGPUPromoteAlloca(&TM));
@ -571,13 +578,6 @@ bool GCNPassConfig::addILPOpts() {
return false;
}
void GCNPassConfig::addIRPasses() {
// TODO: May want to move later or split into an early and late one.
addPass(createAMDGPUCodeGenPreparePass(&getGCNTargetMachine()));
AMDGPUPassConfig::addIRPasses();
}
bool GCNPassConfig::addInstSelector() {
AMDGPUPassConfig::addInstSelector();
addPass(createSILowerI1CopiesPass());