Allow null initialization of scalara data members
in constructors's initializer list. pr4854



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80802 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index f22a3e8..f80a0b8 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -786,11 +786,17 @@
       C = PerformInitializationByConstructor(
             FieldType, (Expr **)Args, NumArgs, IdLoc, 
             SourceRange(IdLoc, RParenLoc), Member->getDeclName(), IK_Direct);
-  } else if (NumArgs != 1) {
+  } else if (NumArgs != 1 && NumArgs != 0) {
     return Diag(IdLoc, diag::err_mem_initializer_mismatch) 
                 << Member->getDeclName() << SourceRange(IdLoc, RParenLoc);
   } else if (!HasDependentArg) {
-    Expr *NewExp = (Expr*)Args[0];
+    Expr *NewExp;
+    if (NumArgs == 0) {
+      NewExp = new (Context) CXXZeroInitValueExpr(FieldType, IdLoc, RParenLoc);
+      NumArgs = 1;
+    }
+    else
+      NewExp = (Expr*)Args[0];
     if (PerformCopyInitialization(NewExp, FieldType, "passing"))
       return true;
     Args[0] = NewExp;