aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-12-20 21:10:58 +0000
committerDouglas Gregor <dgregor@apple.com>2009-12-20 21:10:58 +0000
commit1b6d10555ff70efcc44b8bf25d4755d88a15d48c (patch)
tree2de7de289e383a86ac23ec394e155079334997ef /clang/lib/Sema/SemaDecl.cpp
parentb752f1e25caeb08f2b6dde8a3890c6ac1ef5d012 (diff)
downloadllvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.zip
llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.tar.gz
llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.tar.bz2
Revert accidental commit
llvm-svn: 91795
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp31
1 files changed, 20 insertions, 11 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index a80d62a..c873f39 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 {