[llvm-bugs] [Bug 44666] New: Assertion failure when using concepts combined with variadic templates and overload resolution

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Jan 25 23:39:23 PST 2020


https://bugs.llvm.org/show_bug.cgi?id=44666

            Bug ID: 44666
           Summary: Assertion failure when using concepts combined with
                    variadic templates and overload resolution
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++2a
          Assignee: unassignedclangbugs at nondot.org
          Reporter: david at doublewise.net
                CC: blitzrakete at gmail.com, erik.pilkington at gmail.com,
                    llvm-bugs at lists.llvm.org, richard-llvm at metafoo.co.uk

The following code (sorry I could not reduce it more)

```
template<typename T, typename... Args>
concept constructible_from = requires { T(Args()...); };

template<typename>
constexpr bool true_ = true;

template<typename From, typename To>
concept convertible_to = constructible_from<To, From> and true_<From>;

template<typename T>
concept copy_constructible = requires(T value) { T(value); };

template<typename... Ts> requires (... and copy_constructible<Ts>)
int f();

template<typename>
struct s {
        template<typename U> requires convertible_to<U, int>
        s(s<U> const & other);
        template<typename U> requires constructible_from<int, U>
        s(s<U> const & other);
};

auto x = f<int, s<int>>();
```


when compiled with `clang++ -std=c++2a -o /dev/null -c main.cpp`


crashes with




```
clang++: /home/david/llvm/clang/lib/Sema/SemaTemplateInstantiate.cpp:1179:
clang::TemplateArgument getPackSubstitutedTemplateArgument(clang::Sema &,
clang::TemplateArgument): Assertion `S.ArgumentPackSubstitutionIndex <
(int)Arg.pack_size()' failed.
Stack dump:
0.      Program arguments: /home/david/llvm/build/bin/clang++ -std=c++2a -o
/dev/null -c main.cpp 
1.      main.cpp:24:25: current parser token ')'
 #0 0x00005616c953b542 PrintStackTraceSignalHandler(void*)
(/home/david/llvm/build/bin/clang+++0x31f2542)
 #1 0x00005616c9538eae llvm::sys::RunSignalHandlers()
(/home/david/llvm/build/bin/clang+++0x31efeae)
 #2 0x00005616c953a5c7 llvm::sys::CleanupOnSignal(unsigned long)
(/home/david/llvm/build/bin/clang+++0x31f15c7)
 #3 0x00005616c94b57be (anonymous
namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long)
(/home/david/llvm/build/bin/clang+++0x316c7be)
 #4 0x00005616c94b5964 CrashRecoverySignalHandler(int)
(/home/david/llvm/build/bin/clang+++0x316c964)
 #5 0x00007fd7d4df7930 __restore_rt (/usr/lib/libpthread.so.0+0x14930)
 #6 0x00007fd7d4872f25 raise (/usr/lib/libc.so.6+0x3bf25)
 #7 0x00007fd7d485c897 abort (/usr/lib/libc.so.6+0x25897)
 #8 0x00007fd7d485c767 _nl_load_domain.cold (/usr/lib/libc.so.6+0x25767) #9
0x00007fd7d486b526 (/usr/lib/libc.so.6+0x34526)
#10 0x00005616cb8e5406 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
clang::TypeLoc) (/home/david/llvm/build/bin/clang+++0x559c406)
#11 0x00005616cb8df7aa clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
(/home/david/llvm/build/bin/clang+++0x55967aa)
#12 0x00005616cb9062ec clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc
const&, clang::TemplateArgumentLoc&, bool)
(/home/david/llvm/build/bin/clang+++0x55bd2ec)
#13 0x00005616cb8eefd5 bool clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformTemplateArguments<clang::TemplateArgumentLoc
const*>(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*,
clang::TemplateArgumentListInfo&, bool)
(/home/david/llvm/build/bin/clang+++0x55a5fd5)
#14 0x00005616cb8eece3
clang::Sema::SubstTemplateArguments(llvm::ArrayRef<clang::TemplateArgumentLoc>,
clang::MultiLevelTemplateArgumentList const&, clang::TemplateArgumentListInfo&)
(/home/david/llvm/build/bin/clang+++0x55a5ce3)
#15 0x00005616cb299cb3 substituteParameterMappings(clang::Sema&,
clang::NormalizedConstraint&, clang::ConceptDecl*,
llvm::ArrayRef<clang::TemplateArgument>, clang::ASTTemplateArgumentListInfo
const*) (/home/david/llvm/build/bin/clang+++0x4f50cb3)
#16 0x00005616cb29932b
clang::NormalizedConstraint::fromConstraintExpr(clang::Sema&,
clang::NamedDecl*, clang::Expr const*)
(/home/david/llvm/build/bin/clang+++0x4f5032b)
#17 0x00005616cb298e81
clang::NormalizedConstraint::fromConstraintExprs(clang::Sema&,
clang::NamedDecl*, llvm::ArrayRef<clang::Expr const*>)
(/home/david/llvm/build/bin/clang+++0x4f4fe81)
#18 0x00005616cb298d6d
clang::Sema::getNormalizedAssociatedConstraints(clang::NamedDecl*,
llvm::ArrayRef<clang::Expr const*>)
(/home/david/llvm/build/bin/clang+++0x4f4fd6d)
#19 0x00005616cb299f63 clang::Sema::IsAtLeastAsConstrained(clang::NamedDecl*,
llvm::ArrayRef<clang::Expr const*>, clang::NamedDecl*,
llvm::ArrayRef<clang::Expr const*>, bool&)
(/home/david/llvm/build/bin/clang+++0x4f50f63)
#20 0x00005616cb88c19e
clang::Sema::getMoreSpecializedTemplate(clang::FunctionTemplateDecl*,
clang::FunctionTemplateDecl*, clang::SourceLocation,
clang::TemplatePartialOrderingContext, unsigned int, unsigned
int)::$_5::operator()() const (/home/david/llvm/build/bin/clang+++0x554319e)
#21 0x00005616cb88b844
clang::Sema::getMoreSpecializedTemplate(clang::FunctionTemplateDecl*,
clang::FunctionTemplateDecl*, clang::SourceLocation,
clang::TemplatePartialOrderingContext, unsigned int, unsigned int)
(/home/david/llvm/build/bin/clang+++0x5542844)
#22 0x00005616cb74a9b5 clang::isBetterOverloadCandidate(clang::Sema&,
clang::OverloadCandidate const&, clang::OverloadCandidate const&,
clang::SourceLocation, clang::OverloadCandidateSet::CandidateSetKind)
(/home/david/llvm/build/bin/clang+++0x54019b5)
#23 0x00005616cb73bb5a
clang::OverloadCandidateSet::BestViableFunction(clang::Sema&,
clang::SourceLocation, clang::OverloadCandidate*&)
(/home/david/llvm/build/bin/clang+++0x53f2b5a)
#24 0x00005616cb633999 ResolveConstructorOverload(clang::Sema&,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::OverloadCandidateSet&, clang::QualType, clang::DeclContextLookupResult,
clang::OverloadCandidate*&, bool, bool, bool, bool, bool)
(/home/david/llvm/build/bin/clang+++0x52ea999)
#25 0x00005616cb60b8ef TryConstructorInitialization(clang::Sema&,
clang::InitializedEntity const&, clang::InitializationKind const&,
llvm::MutableArrayRef<clang::Expr*>, clang::QualType, clang::QualType,
clang::InitializationSequence&, bool, bool)
(/home/david/llvm/build/bin/clang+++0x52c28ef)
#26 0x00005616cb608484
clang::InitializationSequence::InitializeFrom(clang::Sema&,
clang::InitializedEntity const&, clang::InitializationKind const&,
llvm::MutableArrayRef<clang::Expr*>, bool, bool)
(/home/david/llvm/build/bin/clang+++0x52bf484)
#27 0x00005616cb1e6d06 TryStaticCast(clang::Sema&,
clang::ActionResult<clang::Expr*, true>&, clang::QualType,
clang::Sema::CheckedConversionKind, clang::SourceRange, unsigned int&,
clang::CastKind&, llvm::SmallVector<clang::CXXBaseSpecifier*, 4u>&, bool)
(/home/david/llvm/build/bin/clang+++0x4e9dd06)
#28 0x00005616cb1deee0 (anonymous
namespace)::CastOperation::CheckCXXCStyleCast(bool, bool)
(/home/david/llvm/build/bin/clang+++0x4e95ee0)
#29 0x00005616cb1e1af8
clang::Sema::BuildCXXFunctionalCastExpr(clang::TypeSourceInfo*,
clang::QualType, clang::SourceLocation, clang::Expr*, clang::SourceLocation)
(/home/david/llvm/build/bin/clang+++0x4e98af8)
#30 0x00005616cb568986
clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, bool) (/home/david/llvm/build/bin/clang+++0x521f986)
#31 0x00005616cb8fabfc clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCXXUnresolvedConstructExpr(clang::CXXUnresolvedConstructExpr*)
(/home/david/llvm/build/bin/clang+++0x55b1bfc)
#32 0x00005616cb8f125e clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
(/home/david/llvm/build/bin/clang+++0x55a825e)
#33 0x00005616cb90c52c (anonymous
namespace)::TemplateInstantiator::TransformExprRequirement(clang::concepts::ExprRequirement*)
(/home/david/llvm/build/bin/clang+++0x55c352c)
#34 0x00005616cb90b770 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformRequiresExpr(clang::RequiresExpr*)
(/home/david/llvm/build/bin/clang+++0x55c2770)
#35 0x00005616cb8f0c0b clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
(/home/david/llvm/build/bin/clang+++0x55a7c0b)
#36 0x00005616cb8e7a8a clang::Sema::SubstExpr(clang::Expr*,
clang::MultiLevelTemplateArgumentList const&)
(/home/david/llvm/build/bin/clang+++0x559ea8a)
#37 0x00005616cb29da01 calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5::operator()(clang::Expr const*)
const (/home/david/llvm/build/bin/clang+++0x4f54a01)
#38 0x00005616cb29cdbf bool
calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5>(clang::Sema&, clang::Expr const*,
clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5&&)
(/home/david/llvm/build/bin/clang+++0x4f53dbf)
#39 0x00005616cb297aba
clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*,
llvm::ArrayRef<clang::Expr const*>, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceRange, clang::ConstraintSatisfaction&)
(/home/david/llvm/build/bin/clang+++0x4f4eaba)
#40 0x00005616cb7e983a clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec
const&, clang::SourceLocation, clang::DeclarationNameInfo const&,
clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*)
(/home/david/llvm/build/bin/clang+++0x54a083a)
#41 0x00005616cb8fc6a9 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*)
(/home/david/llvm/build/bin/clang+++0x55b36a9)
#42 0x00005616cb8f0d61 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
(/home/david/llvm/build/bin/clang+++0x55a7d61)
#43 0x00005616cb8f8dc2 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCXXFoldExpr(clang::CXXFoldExpr*)
(/home/david/llvm/build/bin/clang+++0x55afdc2)
#44 0x00005616cb8f1446 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
(/home/david/llvm/build/bin/clang+++0x55a8446)
#45 0x00005616cb8e7a8a clang::Sema::SubstExpr(clang::Expr*,
clang::MultiLevelTemplateArgumentList const&)
(/home/david/llvm/build/bin/clang+++0x559ea8a)
#46 0x00005616cb29da01 calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5::operator()(clang::Expr const*)
const (/home/david/llvm/build/bin/clang+++0x4f54a01)
#47 0x00005616cb29cdbf bool
calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5>(clang::Sema&, clang::Expr const*,
clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&,
clang::NamedDecl const*, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceLocation, clang::MultiLevelTemplateArgumentList&, clang::Expr
const*, clang::ConstraintSatisfaction&)::$_5&&)
(/home/david/llvm/build/bin/clang+++0x4f53dbf)
#48 0x00005616cb297aba
clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*,
llvm::ArrayRef<clang::Expr const*>, llvm::ArrayRef<clang::TemplateArgument>,
clang::SourceRange, clang::ConstraintSatisfaction&)
(/home/david/llvm/build/bin/clang+++0x4f4eaba)
#49 0x00005616cb938b7a
clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation,
clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>,
clang::ConstraintSatisfaction&) (/home/david/llvm/build/bin/clang+++0x55efb7a)
#50 0x00005616cb880689
clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*,
llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, unsigned int,
clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&,
llvm::SmallVectorImpl<clang::Sema::OriginalCallArg> const*, bool,
llvm::function_ref<bool ()>) (/home/david/llvm/build/bin/clang+++0x5537689)
#51 0x00005616cb882273
clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*,
clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>,
clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool,
llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)
(/home/david/llvm/build/bin/clang+++0x5539273)
#52 0x00005616cb741770
clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*,
clang::DeclAccessPair, clang::TemplateArgumentListInfo*,
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool,
clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder)
(/home/david/llvm/build/bin/clang+++0x53f8770)
#53 0x00005616cb757d4d AddOverloadedCallCandidate(clang::Sema&,
clang::DeclAccessPair, clang::TemplateArgumentListInfo*,
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool)
(/home/david/llvm/build/bin/clang+++0x540ed4d)
#54 0x00005616cb757b4e
clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*,
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool)
(/home/david/llvm/build/bin/clang+++0x540eb4e)
#55 0x00005616cb75803b clang::Sema::buildOverloadedCallSet(clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation,
clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*)
(/home/david/llvm/build/bin/clang+++0x540f03b)
#56 0x00005616cb758479 clang::Sema::BuildOverloadedCallExpr(clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool,
bool) (/home/david/llvm/build/bin/clang+++0x540f479)
#57 0x00005616cb4b0612 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*, bool)
(/home/david/llvm/build/bin/clang+++0x5167612)
#58 0x00005616cb4cd048 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*)
(/home/david/llvm/build/bin/clang+++0x5184048)
#59 0x00005616cb0f375b
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*,
true>) (/home/david/llvm/build/bin/clang+++0x4daa75b)
#60 0x00005616cb0f4ee8
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&,
clang::Parser::TypeCastState, bool, bool*)
(/home/david/llvm/build/bin/clang+++0x4dabee8)
#61 0x00005616cb0f6c47
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&,
clang::Parser::TypeCastState, bool, bool*)
(/home/david/llvm/build/bin/clang+++0x4dadc47)
#62 0x00005616cb0f0e64
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState)
(/home/david/llvm/build/bin/clang+++0x4da7e64)
#63 0x00005616cb0c9d12
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*)
(/home/david/llvm/build/bin/clang+++0x4d80d12)
#64 0x00005616cb0c7cb7 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/home/david/llvm/build/bin/clang+++0x4d7ecb7)
#65 0x00005616cb098478
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
(/home/david/llvm/build/bin/clang+++0x4d4f478)
#66 0x00005616cb097ea6
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
(/home/david/llvm/build/bin/clang+++0x4d4eea6)
#67 0x00005616cb096e77
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/home/david/llvm/build/bin/clang+++0x4d4de77)
#68 0x00005616cb094ab7
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool)
(/home/david/llvm/build/bin/clang+++0x4d4bab7)
#69 0x00005616cb08fced clang::ParseAST(clang::Sema&, bool, bool)
(/home/david/llvm/build/bin/clang+++0x4d46ced)
#70 0x00005616c9f75304 clang::CodeGenAction::ExecuteAction()
(/home/david/llvm/build/bin/clang+++0x3c2c304)
#71 0x00005616c9eb5736 clang::FrontendAction::Execute()
(/home/david/llvm/build/bin/clang+++0x3b6c736)
#72 0x00005616c9e08563
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/home/david/llvm/build/bin/clang+++0x3abf563)
#73 0x00005616c9f6fde8
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/home/david/llvm/build/bin/clang+++0x3c26de8)
#74 0x00005616c84844ff cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/home/david/llvm/build/bin/clang+++0x213b4ff)
#75 0x00005616c848248d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
(/home/david/llvm/build/bin/clang+++0x213948d)
#76 0x00005616c9cba2a2 void llvm::function_ref<void
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const::$_1>(long)
(/home/david/llvm/build/bin/clang+++0x39712a2)
#77 0x00005616c94b570a
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>)
(/home/david/llvm/build/bin/clang+++0x316c70a)
#78 0x00005616c9cb9705
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const
(/home/david/llvm/build/bin/clang+++0x3970705)
#79 0x00005616c9c83f9b
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&,
clang::driver::Command const*&) const
(/home/david/llvm/build/bin/clang+++0x393af9b)
#80 0x00005616c9c843ea
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const
(/home/david/llvm/build/bin/clang+++0x393b3ea)
#81 0x00005616c9c9c987
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&)
(/home/david/llvm/build/bin/clang+++0x3953987)
#82 0x00005616c8481bf7 main (/home/david/llvm/build/bin/clang+++0x2138bf7)
#83 0x00007fd7d485e153 __libc_start_main (/usr/lib/libc.so.6+0x27153)
#84 0x00005616c847f02e _start (/home/david/llvm/build/bin/clang+++0x213602e)
clang++: /home/david/llvm/clang/lib/Parse/Parser.cpp:444: virtual
clang::Parser::~Parser(): Assertion `TemplateIds.empty() && "Still alive
TemplateIdAnnotations around?"' failed.
fish: “/home/david/llvm/build/bin/clan…” terminated by signal SIGABRT (Abort)
```

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200126/ad311dd2/attachment-0001.html>


More information about the llvm-bugs mailing list