--- /dev/null
+; RUN: opt -print-cfg-sccs -disable-output < %s 2>&1 | FileCheck %s
+
+; CHECK: SCCs for Function test in PostOrder:
+; CHECK-NEXT: SCC #1 : %exit,
+; CHECK-NEXT: SCC #2 : %0,
+; CHECK-NEXT: SCC #3 : %3,
+; CHECK-NEXT: SCC #4 : %2, %1,
+; CHECK-NEXT: SCC #5 : %entry,
+define void @test(i1 %cond) {
+entry:
+ br i1 %cond, label %0, label %1
+
+0:
+ br label %exit
+
+1:
+ br label %2
+
+2:
+ br i1 %cond, label %1, label %3
+
+3:
+ br label %exit
+
+exit:
+ ret void
+}
for (scc_iterator<Function*> SCCI = scc_begin(&F); !SCCI.isAtEnd(); ++SCCI) {
const std::vector<BasicBlock *> &nextSCC = *SCCI;
errs() << "\nSCC #" << ++sccNum << " : ";
- for (std::vector<BasicBlock*>::const_iterator I = nextSCC.begin(),
- E = nextSCC.end(); I != E; ++I)
- errs() << (*I)->getName() << ", ";
+ for (BasicBlock *BB : nextSCC) {
+ BB->printAsOperand(errs(), false);
+ errs() << ", ";
+ }
if (nextSCC.size() == 1 && SCCI.hasCycle())
errs() << " (Has self-loop).";
}