diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index fd70851..ef20a6a 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -1418,6 +1418,13 @@
                                              SourceLocation *CommaLocs,
                                              SourceLocation RParenLoc);
 
+  /// InitializeVarWithConstructor - Creates an implicit 
+  /// CXXTemporaryObjectExpr and sets it as the passed in VarDecl initializer.
+  void InitializeVarWithConstructor(VarDecl *VD, 
+                                    CXXConstructorDecl *Constructor,
+                                    QualType DeclInitType, 
+                                    Expr **Exprs, unsigned NumExprs);
+  
   /// InitializationKind - Represents which kind of C++ initialization
   /// [dcl.init] a routine is to perform.
   enum InitializationKind {
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 94b3b76..a2b565b 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -2552,7 +2552,9 @@
       if (const ArrayType *Array = Context.getAsArrayType(Type))
         InitType = Array->getElementType();
       if (!Var->hasExternalStorage() && InitType->isRecordType()) {
-        const CXXConstructorDecl *Constructor = 0;
+        CXXRecordDecl *RD = 
+          cast<CXXRecordDecl>(InitType->getAsRecordType()->getDecl());
+        CXXConstructorDecl *Constructor = 0;
         if (!RequireCompleteType(Var->getLocation(), InitType, 
                                     diag::err_invalid_incomplete_type_use))
           Constructor
@@ -2564,6 +2566,8 @@
                                                  IK_Default);
         if (!Constructor)
           Var->setInvalidDecl();
+        else if (!RD->hasTrivialConstructor()) 
+          InitializeVarWithConstructor(Var, Constructor, InitType, 0, 0);
       }
     }
 
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 8e2302e..e3195a9 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -1764,6 +1764,18 @@
   return DeclPtrTy::make(AliasDecl);
 }
 
+void Sema::InitializeVarWithConstructor(VarDecl *VD, 
+                                        CXXConstructorDecl *Constructor,
+                                        QualType DeclInitType, 
+                                        Expr **Exprs, unsigned NumExprs) {
+  Expr *Temp = 
+    new (Context) CXXTemporaryObjectExpr(Constructor, DeclInitType,
+                                         SourceLocation(), 
+                                         Exprs, NumExprs,
+                                         SourceLocation());
+  VD->setInit(Temp);
+}
+
 /// AddCXXDirectInitializerToDecl - This action is called immediately after 
 /// ActOnDeclarator, when a C++ direct initializer is present.
 /// e.g: "int x(1);"
@@ -1827,17 +1839,9 @@
     if (!Constructor)
       RealDecl->setInvalidDecl();
     else {
-      // Let clients know that initialization was done with a direct
-      // initializer.
       VDecl->setCXXDirectInitializer(true);
-
-      Expr *Temp = 
-        new (Context) CXXTemporaryObjectExpr(Constructor, DeclInitType,
-                                             SourceLocation(), 
-                                             (Expr**)Exprs.release(), 
-                                             NumExprs,
-                                             SourceLocation());
-      VDecl->setInit(Temp);
+      InitializeVarWithConstructor(VDecl, Constructor, DeclInitType, 
+                                   (Expr**)Exprs.release(), NumExprs);
     }
     return;
   }
