From 046567653dd2cb1276888c2c20a4f6c762d8bd6d Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 3 Jun 2014 08:40:27 +0000 Subject: [PATCH] Remove incorrect assertion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210092 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGExprAgg.cpp | 7 +++---- test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index 760e6f15fa..4cb81b54cd 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -439,10 +439,9 @@ void AggExprEmitter::EmitArrayInit(llvm::Value *DestPtr, llvm::ArrayType *AType, // type is an array (or array of array, etc.) of class type. Expr *filler = E->getArrayFiller(); bool hasTrivialFiller = true; - if (CXXConstructExpr *cons = dyn_cast_or_null(filler)) { - assert(cons->getConstructor()->isDefaultConstructor()); - hasTrivialFiller = cons->getConstructor()->isTrivial(); - } + if (CXXConstructExpr *cons = dyn_cast_or_null(filler)) + hasTrivialFiller = cons->getConstructor()->isDefaultConstructor() && + cons->getConstructor()->isTrivial(); // Any remaining elements need to be zero-initialized, possibly // using the filler expression. We can skip this if the we're diff --git a/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp b/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp index 9c8d7f1196..33bd844104 100644 --- a/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp +++ b/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp @@ -448,3 +448,10 @@ namespace DR1070 { }; C c = {}; } + +namespace ArrayOfInitList { + struct S { + S(std::initializer_list); + }; + S x[1] = {}; +} -- 2.50.1