Author: epilk Date: Thu Jul 26 16:40:42 2018 New Revision: 338089 URL: http://llvm.org/viewvc/llvm-project?rev=338089&view=rev Log: [Sema] Fix a crash by completing a type before using it
Only apply this exception on a type that we're able to check. rdar://41903969 Differential revision: https://reviews.llvm.org/D49868 Modified: cfe/trunk/lib/Sema/SemaInit.cpp cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp Modified: cfe/trunk/lib/Sema/SemaInit.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=338089&r1=338088&r2=338089&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaInit.cpp (original) +++ cfe/trunk/lib/Sema/SemaInit.cpp Thu Jul 26 16:40:42 2018 @@ -9130,6 +9130,7 @@ QualType Sema::DeduceTemplateSpecializat Expr *E = ListInit->getInit(0); auto *RD = E->getType()->getAsCXXRecordDecl(); if (!isa<InitListExpr>(E) && RD && + isCompleteType(Kind.getLocation(), E->getType()) && isOrIsDerivedFromSpecializationOf(RD, Template)) TryListConstructors = false; } Modified: cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp?rev=338089&r1=338088&r2=338089&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp (original) +++ cfe/trunk/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp Thu Jul 26 16:40:42 2018 @@ -348,6 +348,31 @@ namespace member_guides { }; } +namespace rdar41903969 { +template <class T> struct A {}; +template <class T> struct B; +template <class T> struct C { + C(A<T>&); + C(B<T>&); +}; + +void foo(A<int> &a, B<int> &b) { + (void)C{b}; + (void)C{a}; +} + +template<typename T> struct X { + X(std::initializer_list<T>) = delete; + X(const X&); +}; + +template <class T> struct D : X<T> {}; + +void bar(D<int>& d) { + (void)X{d}; +} +} + #else // expected-no-diagnostics _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits