abstract the SwitchStack for blocks just like we do the goto labels.
This fixes a crash on invalid (test10). rdar://6805469


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69465 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp
index a5b1886..6595b88 100644
--- a/lib/Sema/SemaStmt.cpp
+++ b/lib/Sema/SemaStmt.cpp
@@ -112,7 +112,7 @@
     rhsval = 0;
   }
 
-  if (SwitchStack.empty()) {
+  if (getSwitchStack().empty()) {
     Diag(CaseLoc, diag::err_case_not_in_switch);
     return StmtError();
   }
@@ -121,7 +121,7 @@
   lhsval.release();
   rhsval.release();
   CaseStmt *CS = new (Context) CaseStmt(LHSVal, RHSVal, CaseLoc);
-  SwitchStack.back()->addSwitchCase(CS);
+  getSwitchStack().back()->addSwitchCase(CS);
   return Owned(CS);
 }
 
@@ -137,13 +137,13 @@
                        StmtArg subStmt, Scope *CurScope) {
   Stmt *SubStmt = static_cast<Stmt*>(subStmt.release());
 
-  if (SwitchStack.empty()) {
+  if (getSwitchStack().empty()) {
     Diag(DefaultLoc, diag::err_default_not_in_switch);
     return Owned(SubStmt);
   }
 
   DefaultStmt *DS = new (Context) DefaultStmt(DefaultLoc, SubStmt);
-  SwitchStack.back()->addSwitchCase(DS);
+  getSwitchStack().back()->addSwitchCase(DS);
   return Owned(DS);
 }
 
@@ -241,7 +241,7 @@
   }
 
   SwitchStmt *SS = new (Context) SwitchStmt(Cond);
-  SwitchStack.push_back(SS);
+  getSwitchStack().push_back(SS);
   return Owned(SS);
 }
 
@@ -325,11 +325,11 @@
                             StmtArg Body) {
   Stmt *BodyStmt = (Stmt*)Body.release();
 
-  SwitchStmt *SS = SwitchStack.back();
+  SwitchStmt *SS = getSwitchStack().back();
   assert(SS == (SwitchStmt*)Switch.get() && "switch stack missing push/pop!");
 
   SS->setBody(BodyStmt, SwitchLoc);
-  SwitchStack.pop_back(); 
+  getSwitchStack().pop_back(); 
 
   Expr *CondExpr = SS->getCond();
   QualType CondType = CondExpr->getType();