From: Will Dietz Date: Mon, 7 Jan 2013 09:51:17 +0000 (+0000) Subject: CFG.cpp: Fix wrapping logic when printing block preds/succs. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dac62528c1a66db867e21cfa7cfc439d557d6f0c;p=clang CFG.cpp: Fix wrapping logic when printing block preds/succs. First check only wrapped with i==8, second wrapped at i==2,8,18,28,... This fix restores the intended behavior: i==8,18,28,... Found with -fsanitize=integer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171718 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp index 3fe76d58bc..043066bd60 100644 --- a/lib/Analysis/CFG.cpp +++ b/lib/Analysis/CFG.cpp @@ -3893,7 +3893,7 @@ static void print_block(raw_ostream &OS, const CFG* cfg, for (CFGBlock::const_pred_iterator I = B.pred_begin(), E = B.pred_end(); I != E; ++I, ++i) { - if (i == 8 || (i-8) == 0) + if (i % 10 == 8) OS << "\n "; OS << " B" << (*I)->getBlockID(); @@ -3922,7 +3922,7 @@ static void print_block(raw_ostream &OS, const CFG* cfg, for (CFGBlock::const_succ_iterator I = B.succ_begin(), E = B.succ_end(); I != E; ++I, ++i) { - if (i == 8 || (i-8) % 10 == 0) + if (i % 10 == 8) OS << "\n "; if (*I) diff --git a/test/Analysis/cfg.cpp b/test/Analysis/cfg.cpp new file mode 100644 index 0000000000..8c1c7653db --- /dev/null +++ b/test/Analysis/cfg.cpp @@ -0,0 +1,37 @@ +// RUN: %clang_cc1 -fsyntax-only -analyze -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s +// Check the wrapping behavior when dumping the CFG. + +// CHECK: ENTRY +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B1] +// CHECK: Succs (21): B2 B3 B4 B5 B6 B7 B8 B9 +// CHECK: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 +// CHECK: B20 B21 B0 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (21): B2 B3 B4 B5 B6 B7 B8 B9 +// CHECK-NEXT: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 +// CHECK-NEXT: B20 B21 B1 +void test(int i) { + switch(i) { + case 0: break; + case 1: break; + case 2: break; + case 3: break; + case 4: break; + case 5: break; + case 6: break; + case 7: break; + case 8: break; + case 9: break; + case 10: break; + case 11: break; + case 12: break; + case 13: break; + case 14: break; + case 15: break; + case 16: break; + case 17: break; + case 18: break; + case 19: break; + } +}