From 503053a737bf1c54899bcc2d1b4c514485e30054 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 19 Dec 2012 02:27:38 +0000 Subject: [PATCH] Fix assertion failure in self-host (and probably bogus template instantiation too). When instantiating a direct-initializer, if we find it has zero arguments, produce an empty ParenListExpr rather than returning a null expression. llvm-svn: 170490 --- clang/lib/Sema/TreeTransform.h | 4 ---- clang/test/SemaTemplate/instantiate-member-initializers.cpp | 10 ++++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 52f6c4d4..c161d8c 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -2622,10 +2622,6 @@ ExprResult TreeTransform::TransformInitializer(Expr *Init, Construct->getLocEnd(), Construct->getType()); - // Treat an empty initializer like none. - if (NewArgs.empty()) - return SemaRef.Owned((Expr*)0); - // Build a ParenListExpr to represent anything else. SourceRange Parens = Construct->getParenRange(); return getDerived().RebuildParenListExpr(Parens.getBegin(), NewArgs, diff --git a/clang/test/SemaTemplate/instantiate-member-initializers.cpp b/clang/test/SemaTemplate/instantiate-member-initializers.cpp index 45503b3..297ae91 100644 --- a/clang/test/SemaTemplate/instantiate-member-initializers.cpp +++ b/clang/test/SemaTemplate/instantiate-member-initializers.cpp @@ -25,3 +25,13 @@ public: BB() : AA(1) {} }; BB x; + +struct X { + X(); +}; +template +struct Y { + Y() : x() {} + X x; +}; +Y y; -- 2.7.4