                                        unsigned NumClobbers);
  
 diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td
-index 413847d0..5875b619 100644
+index 5ddae84c..7e2d09e5 100644
 --- a/include/clang/Basic/DiagnosticParseKinds.td
 +++ b/include/clang/Basic/DiagnosticParseKinds.td
 @@ -27,8 +27,8 @@ def err_msasm_unable_to_create_target : Error<

   if (CHECK_PERMISSIVE(JumpScope == TargetScope))
     return;
 
@@ -816,7 +837,7 @@ void JumpScopeChecker::DiagnoseIndirectJump(IndirectGotoStmt *Jump,
   // Walk out the scope chain until we reach the common ancestor.
   for (unsigned I = JumpScope; I != Common; I = Scopes[I].ParentScope)
     if (Scopes[I].OutDiag) {

+  }
+  Block = createBlock();
+  Block->setTerminator(G);
+  for (auto *E : G->labels()) {
+    LabelMapTy::iterator I = LabelMap.find(E->getLabel());
+    if (I == LabelMap.end()) {
+      // We will need to backpatch this block later.
+      BackpatchBlocks.push_back(JumpSource(Block, ScopePos));
+      // Save "Succ" in BackpatchBlocks. In the backpatch processing, "Succ" is
+      // used to avoid adding "Succ" again.
+      BackpatchBlocks.push_back(JumpSource(Succ, ScopePos));
+      return Block;
+    }
+  }
+  for (auto *E : G->labels()) {
+    LabelMapTy::iterator I = LabelMap.find(E->getLabel());
+    JumpTarget JT = I->second;
+    addAutomaticObjHandling(ScopePos, JT.scopePosition, G);
+    if (JT.block == Succ)
+      continue;
+    addSuccessor(Block, JT.block);
+  }
+  return Block;
+}
+
