summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaStmt.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-18 20:10:59 +0000
committerChris Lattner <sabre@nondot.org>2009-04-18 20:10:59 +0000
commit96b313977350cd0654c9bd186dc86bc242fb534f (patch)
tree811b5b2dfde129ccbc8b66abc83ed14dec1eec35 /clang/lib/Sema/SemaStmt.cpp
parentf95894c1d2a1f7d61e7bbe4f55f8938d0e2ee969 (diff)
downloadbcm5719-llvm-96b313977350cd0654c9bd186dc86bc242fb534f.tar.gz
bcm5719-llvm-96b313977350cd0654c9bd186dc86bc242fb534f.zip
abstract the SwitchStack for blocks just like we do the goto labels.
This fixes a crash on invalid (test10). rdar://6805469 llvm-svn: 69465
Diffstat (limited to 'clang/lib/Sema/SemaStmt.cpp')
-rw-r--r--clang/lib/Sema/SemaStmt.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index a5b188696a5..6595b881220 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -112,7 +112,7 @@ Sema::ActOnCaseStmt(SourceLocation CaseLoc, ExprArg lhsval,
rhsval = 0;
}
- if (SwitchStack.empty()) {
+ if (getSwitchStack().empty()) {
Diag(CaseLoc, diag::err_case_not_in_switch);
return StmtError();
}
@@ -121,7 +121,7 @@ Sema::ActOnCaseStmt(SourceLocation CaseLoc, ExprArg lhsval,
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 @@ Sema::ActOnDefaultStmt(SourceLocation DefaultLoc, SourceLocation ColonLoc,
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 @@ Sema::ActOnStartOfSwitchStmt(ExprArg cond) {
}
SwitchStmt *SS = new (Context) SwitchStmt(Cond);
- SwitchStack.push_back(SS);
+ getSwitchStack().push_back(SS);
return Owned(SS);
}
@@ -325,11 +325,11 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtArg Switch,
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();
OpenPOWER on IntegriCloud