diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp b/llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp index 823c9040c87..15ccef8ac83 100644 --- a/llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp +++ b/llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp @@ -504,6 +504,9 @@ void SILowerI1Copies::lowerPhis() {    SmallVector<MachineBasicBlock *, 4> IncomingBlocks;    SmallVector<unsigned, 4> IncomingRegs;    SmallVector<unsigned, 4> IncomingUpdated; +#ifndef NDEBUG +  DenseSet<unsigned> PhiRegisters; +#endif    for (MachineBasicBlock &MBB : *MF) {      LF.initialize(MBB); @@ -531,13 +534,17 @@ void SILowerI1Copies::lowerPhis() {          } else if (IncomingDef->getOpcode() == AMDGPU::IMPLICIT_DEF) {            continue;          } else { -          assert(IncomingDef->isPHI()); +          assert(IncomingDef->isPHI() || PhiRegisters.count(IncomingReg));          }          IncomingBlocks.push_back(IncomingMBB);          IncomingRegs.push_back(IncomingReg);        } +#ifndef NDEBUG +      PhiRegisters.insert(DstReg); +#endif +        // Phis in a loop that are observed outside the loop receive a simple but        // conservatively correct treatment.        MachineBasicBlock *PostDomBound = &MBB; | 

