Index: lib/Analysis/CFG.cpp
===================================================================
--- lib/Analysis/CFG.cpp        (revision 183212)
+++ lib/Analysis/CFG.cpp        (working copy)
@@ -2671,8 +2671,13 @@
   // If we have no "default:" case, the default transition is to the code
   // following the switch body.  Moreover, take into account if all the
   // cases of a switch are covered (e.g., switching on an enum value).
+  //
+  // Note: We add a successor to a switch that is considered covered yet has no
+  //       case statements if the enumeration has no enumerators.
   addSuccessor(SwitchTerminatedBlock,
-               switchExclusivelyCovered || Terminator->isAllEnumCasesCovered()
+               (switchExclusivelyCovered ||
+                (Terminator->isAllEnumCasesCovered() &&
+                 Terminator->getSwitchCaseList()))
                ? 0 : DefaultCaseBlock);
 
   // Add the terminator and condition in the switch block.
Index: test/Analysis/cfg.cpp
===================================================================
--- test/Analysis/cfg.cpp       (revision 183212)
+++ test/Analysis/cfg.cpp       (working copy)
@@ -66,3 +66,19 @@
 
   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) {}
+}
