summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2013-06-04 17:38:44 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2013-06-04 17:38:44 +0000
commitf69ce860487ec0b1eceb23f8391614d5772aae3b (patch)
treed6ac45b5978f12878f0ad4741560a5dacbb93743 /clang/test
parent33a35dff8305e01d15fbf881f500ac7ad1b020f1 (diff)
downloadbcm5719-llvm-f69ce860487ec0b1eceb23f8391614d5772aae3b.tar.gz
bcm5719-llvm-f69ce860487ec0b1eceb23f8391614d5772aae3b.zip
Analysis: Add a CFG successor to a SwitchStmt if it is both empty and fully covered
Consider the case where a SwitchStmt satisfied isAllEnumCasesCovered() as well as having no cases at all (i.e. the enum it covers has no enumerators). In this case, we should add a successor to repair the CFG. This fixes PR16212. llvm-svn: 183237
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Analysis/cfg.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/Analysis/cfg.cpp b/clang/test/Analysis/cfg.cpp
index 0587057d724..c2ec2e9bec2 100644
--- a/clang/test/Analysis/cfg.cpp
+++ b/clang/test/Analysis/cfg.cpp
@@ -66,3 +66,19 @@ void checkDeclStmts() {
static_assert(1, "abc");
}
+
+// CHECK: ENTRY
+// CHECK-NEXT: Succs (1): B1
+// CHECK: [B1]
+// CHECK-NEXT: 1: e
+// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, enum EmptyE)
+// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, IntegralCast, int)
+// CHECK-NEXT: T: switch [B1.3]
+// CHECK-NEXT: Preds (1): B2
+// CHECK-NEXT: Succs (1): B0
+// CHECK: [B0 (EXIT)]
+// CHECK-NEXT: Preds (1): B1
+enum EmptyE {};
+void F(EmptyE e) {
+ switch (e) {}
+}
OpenPOWER on IntegriCloud