]> granicus.if.org Git - clang/commitdiff
When transforming an expression statement (e.g., for template
authorDouglas Gregor <dgregor@apple.com>
Fri, 13 Nov 2009 18:34:26 +0000 (18:34 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 13 Nov 2009 18:34:26 +0000 (18:34 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88668 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp
lib/Sema/TreeTransform.h

index 84934f5baf885f71abf46944ef7c591b45aabc53..be0163bbec917bc82fef81baff4d2aa20b4ee8d5 100644 (file)
@@ -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)) {
index 2095fba6169ae15eda71702857ac7603b09c29a5..e46f9c75d288f7282579641aaffce36448899212 100644 (file)
@@ -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));
     }
   }