diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-11-13 18:34:26 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-11-13 18:34:26 +0000 |
commit | 07eae02fc7252d4f7c13aac82be47d650b3057bf (patch) | |
tree | 65c59c1e9aa59813004fd03165b8a1cbb7057fcf /clang/lib | |
parent | 420b0f1bd8004e32726325c1acda7ec6f3325aa2 (diff) | |
download | bcm5719-llvm-07eae02fc7252d4f7c13aac82be47d650b3057bf.tar.gz bcm5719-llvm-07eae02fc7252d4f7c13aac82be47d650b3057bf.zip |
When transforming an expression statement (e.g., for template
instantiation), be sure to finish the expression statement by
providing a FullExprArg, making sure that temporaries get
destroyed. Fixes an obscure failure when parsing
llvm/LinkAllPasses.h.
llvm-svn: 88668
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 84934f5baf8..be0163bbec9 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1348,7 +1348,7 @@ Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, if (const RecordType *FieldClassType = Field->getType()->getAs<RecordType>()) { CXXRecordDecl *FieldClassDecl - = cast<CXXRecordDecl>(FieldClassType->getDecl()); + = cast<CXXRecordDecl>(FieldClassType->getDecl()); for (RecordDecl::field_iterator FA = FieldClassDecl->field_begin(), EA = FieldClassDecl->field_end(); FA != EA; FA++) { if (CXXBaseOrMemberInitializer *Value = AllBaseFields.lookup(*FA)) { diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 2095fba6169..e46f9c75d28 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1709,7 +1709,7 @@ Sema::OwningStmtResult TreeTransform<Derived>::TransformStmt(Stmt *S) { if (E.isInvalid()) return getSema().StmtError(); - return getSema().Owned(E.takeAs<Stmt>()); + return getSema().ActOnExprStmt(getSema().FullExpr(E)); } } |