Index: llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp +++ llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp @@ -587,6 +587,11 @@ } bool SIFixSGPRCopies::runOnMachineFunction(MachineFunction &MF) { + // Only need to run this in SelectionDAG path. + if (MF.getProperties().hasProperty( + MachineFunctionProperties::Property::Selected)) + return false; + const GCNSubtarget &ST = MF.getSubtarget(); MRI = &MF.getRegInfo(); TRI = ST.getRegisterInfo(); Index: llvm/lib/Target/AMDGPU/SIFixupVectorISel.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SIFixupVectorISel.cpp +++ llvm/lib/Target/AMDGPU/SIFixupVectorISel.cpp @@ -217,6 +217,11 @@ } bool SIFixupVectorISel::runOnMachineFunction(MachineFunction &MF) { + // Only need to run this in SelectionDAG path. + if (MF.getProperties().hasProperty( + MachineFunctionProperties::Property::Selected)) + return false; + if (skipFunction(MF.getFunction())) return false; Index: llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp +++ llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp @@ -452,6 +452,11 @@ /// all others, because phi lowering looks through copies and can therefore /// often make copy lowering unnecessary. bool SILowerI1Copies::runOnMachineFunction(MachineFunction &TheMF) { + // Only need to run this in SelectionDAG path. + if (TheMF.getProperties().hasProperty( + MachineFunctionProperties::Property::Selected)) + return false; + MF = &TheMF; MRI = &MF->getRegInfo(); DT = &getAnalysis();