diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-12-20 21:10:58 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-12-20 21:10:58 +0000 |
| commit | 1b6d10555ff70efcc44b8bf25d4755d88a15d48c (patch) | |
| tree | 2de7de289e383a86ac23ec394e155079334997ef /clang/lib/Sema | |
| parent | b752f1e25caeb08f2b6dde8a3890c6ac1ef5d012 (diff) | |
| download | bcm5719-llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.tar.gz bcm5719-llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.zip | |
Revert accidental commit
llvm-svn: 91795
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a80d62a4738..c873f395797 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3745,19 +3745,28 @@ void Sema::ActOnUninitializedDecl(DeclPtrTy dcl, InitType->isRecordType() && !InitType->isDependentType()) { if (!RequireCompleteType(Var->getLocation(), InitType, diag::err_invalid_incomplete_type_use)) { - InitializedEntity Entity - = InitializedEntity::InitializeVariable(Var); - InitializationKind Kind - = InitializationKind::CreateDefault(Var->getLocation()); - - InitializationSequence InitSeq(*this, Entity, Kind, 0, 0); - OwningExprResult Init = InitSeq.Perform(*this, Entity, Kind, - MultiExprArg(*this, 0, 0)); - if (Init.isInvalid()) + ASTOwningVector<&ActionBase::DeleteExpr> ConstructorArgs(*this); + + CXXConstructorDecl *Constructor + = PerformInitializationByConstructor(InitType, + MultiExprArg(*this, 0, 0), + Var->getLocation(), + SourceRange(Var->getLocation(), + Var->getLocation()), + Var->getDeclName(), + InitializationKind::CreateDefault(Var->getLocation()), + ConstructorArgs); + + // FIXME: Location info for the variable initialization? + if (!Constructor) Var->setInvalidDecl(); else { - Var->setInit(Context, - MaybeCreateCXXExprWithTemporaries(Init.takeAs<Expr>())); + // FIXME: Cope with initialization of arrays + if (!Constructor->isTrivial() && + InitializeVarWithConstructor(Var, Constructor, + move_arg(ConstructorArgs))) + Var->setInvalidDecl(); + FinalizeVarWithDestructor(Var, InitType); } } else { |

