Index: llvm/trunk/lib/Analysis/DivergenceAnalysis.cpp =================================================================== --- llvm/trunk/lib/Analysis/DivergenceAnalysis.cpp +++ llvm/trunk/lib/Analysis/DivergenceAnalysis.cpp @@ -77,6 +77,8 @@ #include using namespace llvm; +#define DEBUG_TYPE "divergence" + namespace { class DivergencePropagator { @@ -299,6 +301,10 @@ PDT, DivergentValues); DP.populateWithSourcesOfDivergence(); DP.propagate(); + LLVM_DEBUG( + dbgs() << "\nAfter divergence analysis on " << F.getName() << ":\n"; + print(dbgs(), F.getParent()) + ); return false; } @@ -318,12 +324,17 @@ // Dumps all divergent values in F, arguments and then instructions. for (auto &Arg : F->args()) { - if (DivergentValues.count(&Arg)) - OS << "DIVERGENT: " << Arg << "\n"; + OS << (DivergentValues.count(&Arg) ? "DIVERGENT: " : " "); + OS << Arg << "\n"; } // Iterate instructions using instructions() to ensure a deterministic order. - for (auto &I : instructions(F)) { - if (DivergentValues.count(&I)) - OS << "DIVERGENT:" << I << "\n"; + for (auto BI = F->begin(), BE = F->end(); BI != BE; ++BI) { + auto &BB = *BI; + OS << "\n " << BB.getName() << ":\n"; + for (auto &I : BB.instructionsWithoutDebug()) { + OS << (DivergentValues.count(&I) ? "DIVERGENT: " : " "); + OS << I << "\n"; + } } + OS << "\n"; } Index: llvm/trunk/test/Analysis/DivergenceAnalysis/AMDGPU/phi-undef.ll =================================================================== --- llvm/trunk/test/Analysis/DivergenceAnalysis/AMDGPU/phi-undef.ll +++ llvm/trunk/test/Analysis/DivergenceAnalysis/AMDGPU/phi-undef.ll @@ -2,9 +2,12 @@ ; CHECK-LABEL: 'test1': ; CHECK-NEXT: DIVERGENT: i32 %bound +; CHECK: {{^ *}}%counter = ; CHECK-NEXT: DIVERGENT: %break = icmp sge i32 %counter, %bound ; CHECK-NEXT: DIVERGENT: br i1 %break, label %footer, label %body -; CHECK-NEXT: DIVERGENT: br i1 %break, label %end, label %header +; CHECK: {{^ *}}%counter.next = +; CHECK: {{^ *}}%counter.footer = +; CHECK: DIVERGENT: br i1 %break, label %end, label %header ; Note: %counter is not divergent! define amdgpu_ps void @test1(i32 %bound) { entry: