summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-11-24 21:34:32 +0000
committerDouglas Gregor <dgregor@apple.com>2009-11-24 21:34:32 +0000
commit7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2 (patch)
treeaebaa3ee1ad8b28e68e68242bbc5ae4ae0c78185
parent680f861d74f39bb29ad87346f764da7cc392c5aa (diff)
downloadbcm5719-llvm-7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2.tar.gz
bcm5719-llvm-7f800f9d500cb40aa2984ee1b2fb3ea99a53d4e2.zip
"Do" loops cannot have condition variables, so don't parse them.
llvm-svn: 89801
-rw-r--r--clang/lib/Parse/ParseStmt.cpp7
-rw-r--r--clang/test/SemaTemplate/instantiate-function-1.cpp3
2 files changed, 3 insertions, 7 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index 66e61dd949f..294f8729884 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -875,10 +875,9 @@ Parser::OwningStmtResult Parser::ParseDoStatement(AttributeList *Attr) {
}
// Parse the parenthesized condition.
- OwningExprResult Cond(Actions);
- SourceLocation LPLoc, RPLoc;
- ParseParenExprOrCondition(Cond, true, &LPLoc, &RPLoc);
-
+ SourceLocation LPLoc = ConsumeParen();
+ OwningExprResult Cond = ParseExpression();
+ SourceLocation RPLoc = MatchRHSPunctuation(tok::r_paren, LPLoc);
DoScope.Exit();
if (Cond.isInvalid() || Body.isInvalid())
diff --git a/clang/test/SemaTemplate/instantiate-function-1.cpp b/clang/test/SemaTemplate/instantiate-function-1.cpp
index 2749ec24401..a6c269febea 100644
--- a/clang/test/SemaTemplate/instantiate-function-1.cpp
+++ b/clang/test/SemaTemplate/instantiate-function-1.cpp
@@ -106,9 +106,6 @@ template<typename T> struct Do0 {
void f(T t) {
do {
} while (t); // expected-error{{not contextually}}
-
- do {
- } while (T t2 = T());
}
};
OpenPOWER on IntegriCloud