summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-05-17 21:11:30 +0000
committerAnders Carlsson <andersca@mac.com>2009-05-17 21:11:30 +0000
commit24824e50095b4abb41e14d2ad6fed6236987f10c (patch)
tree9b328951acdc62f32cce9e2fbbb9ac240d62de96 /clang/lib
parent0e70d84e2958200cd7a9ea63f0aaf54b331d157d (diff)
downloadbcm5719-llvm-24824e50095b4abb41e14d2ad6fed6236987f10c.tar.gz
bcm5719-llvm-24824e50095b4abb41e14d2ad6fed6236987f10c.zip
Make ActOnExprStmt take a FullExprArg.
llvm-svn: 71989
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/Expr.cpp3
-rw-r--r--clang/lib/Parse/ParseObjc.cpp2
-rw-r--r--clang/lib/Parse/ParseStmt.cpp6
-rw-r--r--clang/lib/Sema/Sema.h2
-rw-r--r--clang/lib/Sema/SemaStmt.cpp4
5 files changed, 10 insertions, 7 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 3133a8f42c2..19ab835707b 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -594,6 +594,9 @@ bool Expr::isUnusedResultAWarning(SourceLocation &Loc, SourceRange &R1,
// effects (e.g. a placement new with an uninitialized POD).
case CXXDeleteExprClass:
return false;
+ case CXXExprWithTemporariesClass:
+ return cast<CXXExprWithTemporaries>(this)
+ ->getSubExpr()->isUnusedResultAWarning(Loc, R1, R2);
}
}
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp
index 6c42f429ccd..e1d0bb6e134 100644
--- a/clang/lib/Parse/ParseObjc.cpp
+++ b/clang/lib/Parse/ParseObjc.cpp
@@ -1408,7 +1408,7 @@ Parser::OwningStmtResult Parser::ParseObjCAtStatement(SourceLocation AtLoc) {
}
// Otherwise, eat the semicolon.
ExpectAndConsume(tok::semi, diag::err_expected_semi_after_expr);
- return Actions.ActOnExprStmt(move(Res));
+ return Actions.ActOnExprStmt(Actions.FullExpr(Res));
}
Parser::OwningExprResult Parser::ParseObjCAtExpression(SourceLocation AtLoc) {
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index 16b7a9f07f2..cf4e2f44bc2 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -121,7 +121,7 @@ Parser::ParseStatementOrDeclaration(bool OnlyStatement) {
}
// Otherwise, eat the semicolon.
ExpectAndConsume(tok::semi, diag::err_expected_semi_after_expr);
- return Actions.ActOnExprStmt(move(Expr));
+ return Actions.ActOnExprStmt(Actions.FullExpr(Expr));
}
case tok::kw_case: // C99 6.8.1: labeled-statement
@@ -457,7 +457,7 @@ Parser::OwningStmtResult Parser::ParseCompoundStatementBody(bool isStmtExpr) {
// Eat the semicolon at the end of stmt and convert the expr into a
// statement.
ExpectAndConsume(tok::semi, diag::err_expected_semi_after_expr);
- R = Actions.ActOnExprStmt(move(Res));
+ R = Actions.ActOnExprStmt(Actions.FullExpr(Res));
}
}
@@ -929,7 +929,7 @@ Parser::OwningStmtResult Parser::ParseForStatement() {
// Turn the expression into a stmt.
if (!Value.isInvalid())
- FirstPart = Actions.ActOnExprStmt(move(Value));
+ FirstPart = Actions.ActOnExprStmt(Actions.FullExpr(Value));
if (Tok.is(tok::semi)) {
ConsumeToken();
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h
index eb723bb080e..9c277454980 100644
--- a/clang/lib/Sema/Sema.h
+++ b/clang/lib/Sema/Sema.h
@@ -1155,7 +1155,7 @@ public:
//===--------------------------------------------------------------------===//
// Statement Parsing Callbacks: SemaStmt.cpp.
public:
- virtual OwningStmtResult ActOnExprStmt(ExprArg Expr);
+ virtual OwningStmtResult ActOnExprStmt(FullExprArg Expr);
virtual OwningStmtResult ActOnNullStmt(SourceLocation SemiLoc);
virtual OwningStmtResult ActOnCompoundStmt(SourceLocation L, SourceLocation R,
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index 5c04c2491f6..155b51048a7 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -21,8 +21,8 @@
#include "clang/Basic/TargetInfo.h"
using namespace clang;
-Sema::OwningStmtResult Sema::ActOnExprStmt(ExprArg expr) {
- Expr *E = expr.takeAs<Expr>();
+Sema::OwningStmtResult Sema::ActOnExprStmt(FullExprArg expr) {
+ Expr *E = expr->takeAs<Expr>();
assert(E && "ActOnExprStmt(): missing expression");
// C99 6.8.3p2: The expression in an expression statement is evaluated as a
OpenPOWER on IntegriCloud