]> granicus.if.org Git - llvm/commitdiff
AMDGPU: Run AMDGPUCodeGenPrepare after inlining
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 30 Jan 2017 18:40:29 +0000 (18:40 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 30 Jan 2017 18:40:29 +0000 (18:40 +0000)
With leaf functions, this makes nonsensical decisions
based on the uniformity of the arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293525 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

index e4f693267e2261afdbf5610fd6df36200fa18f82..9cc30a8545ca27a6659d3f6488b649634716d477 100644 (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());