diff --git a/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp b/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp --- a/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp +++ b/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp @@ -1373,6 +1373,10 @@ Needs = StateExact | StateWQM | StateStrict; } + // Exact mode exit can occur in terminators, but must be before branches. + if (MI.isBranch() && OutNeeds == StateExact) + Needs = StateExact; + ++Next; } else { // End of basic block