New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CTAD on constrained templates crashes in an std::format usage #58548
Labels
c++20
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
concepts
C++20 concepts
crash-on-valid
Comments
Confirmed on trunk https://godbolt.org/z/PzGKnjEGK. Reduced to: template <class, class> struct formatter;
template <class, class> struct basic_format_context {};
template <class _Ctx> void __handle_replacement_field(_Ctx __arg) {
formatter<decltype(__arg), int> __ctx;
}
int vformat_to() {
__handle_replacement_field(0);
return 0;
}
int vformat___res(vformat_to());
template <typename CharType>
concept has_format_function =
format(basic_format_context<CharType, CharType>());
template <typename ValueType, typename CharType>
requires has_format_function<CharType>
struct formatter<ValueType, CharType> {
template <typename OutputIt>
OutputIt format(basic_format_context<OutputIt, CharType>);
}; |
royjacobson
added
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
concepts
C++20 concepts
and removed
new issue
labels
Oct 22, 2022
@llvm/issue-subscribers-clang-frontend |
royjacobson
changed the title
clang-14 crashes at std::format
CTAD on constrained templates crashes in an std::format usage
Oct 22, 2022
@royjacobson I don't see |
zyn0217
added a commit
that referenced
this issue
Feb 3, 2024
…Candidate (#80395) This is yet another one-line patch to fix crashes on constraint substitution. ```cpp template <class, class> struct formatter; template <class, class> struct basic_format_context {}; template <typename CharType> concept has_format_function = format(basic_format_context<CharType, CharType>()); template <typename ValueType, typename CharType> requires has_format_function<CharType> struct formatter<ValueType, CharType> { template <typename OutputIt> CharType format(basic_format_context<OutputIt, CharType>); }; ``` In this case, we would build up a `RecoveryExpr` for a call within a constraint expression due to the absence of viable functions. The heuristic algorithm attempted to find such a function inside of a ClassTemplatePartialSpecialization, from which we started to substitute its requires-expression, and it succeeded with a FunctionTemplate such that 1) It has only one parameter, which is dependent. 2) The only one parameter depends on two template parameters. They are, in canonical form, `<template-parameter-1-0>` and `<template-parameter-0-1>` respectively. Before we emit an error, we still want to recover the most viable functions. This goes downhill to deducing template parameters against its arguments, where we would collect the argument type with the same depth as the parameter type into a Deduced set. The size of the set is presumed to be that of function template parameters, which is 1 in this case. However, since we haven't yet properly set the template depth before the dance, we'll end up putting the type for `<template-parameter-0-1>` to the second position of Deduced set, which is unfortunately an access violation! The bug seems to appear since clang 12.0. This fixes [the case](#58548 (comment)).
@llvm/issue-subscribers-c-20 Author: None (nikola-sh)
Ubuntu 22.04
```console
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
0. Program arguments: /usr/bin/clang++ -DAUXLIB_FMT_BY_STD_FORMAT -DBOOST_FILESYSTEM_NO_DEPRECATED -D_FILE_OFFSET_BITS=64 -I/mnt/d/MyDocs/Projects/auxlib/include -isystem /mnt/d/libs/boost_1_78_0 -stdlib=libc++ -Wall -Wno-unused-function -Wno-unused-parameter -Wno-dangling-else -Werror -O2 -g -fPIC -std=gnu++20 -MD -MT auxlib/CMakeFiles/auxlib.dir/src/execute_process.cpp.o -MF auxlib/CMakeFiles/auxlib.dir/src/execute_process.cpp.o.d -o auxlib/CMakeFiles/auxlib.dir/src/execute_process.cpp.o -c /mnt/d/MyDocs/Projects/auxlib/src/execute_process.cpp
1. <eof> parser at end of file
2. /usr/lib/llvm-14/bin/../include/c++/v1/format:313:1: instantiating function definition 'std::vformat_to<std::back_insert_iterator<std::string>>'
3. /usr/lib/llvm-14/bin/../include/c++/v1/format:295:5: instantiating function definition 'std::__vformat_to<std::back_insert_iterator<std::string>, char, std::back_insert_iterator<std::string>>'
4. /usr/lib/llvm-14/bin/../include/c++/v1/format:249:1: instantiating function definition 'std::__format::__vformat_to<std::basic_format_parse_context<char>, std::format_context>'
5. /usr/lib/llvm-14/bin/../include/c++/v1/format:207:1: instantiating function definition 'std::__format::__handle_replacement_field<char, std::basic_format_parse_context<char>, std::format_context>'
6. /usr/lib/llvm-14/bin/../include/c++/v1/__format/format_arg.h:68:1: instantiating function definition 'std::visit_format_arg<(lambda at /usr/lib/llvm-14/bin/../include/c++/v1/format:227:7), std::format_context>'
7. /usr/lib/llvm-14/bin/../include/c++/v1/type_traits:3828:29: instantiating class definition 'std::invoke_result<(lambda at /usr/lib/llvm-14/bin/../include/c++/v1/format:227:7), bool &>'
8. /usr/lib/llvm-14/bin/../include/c++/v1/type_traits:3719:8: instantiating class definition 'std::__invoke_of<(lambda at /usr/lib/llvm-14/bin/../include/c++/v1/format:227:7), bool &>'
9. /usr/lib/llvm-14/bin/../include/c++/v1/type_traits:3652:8: instantiating class definition 'std::__invokable_r<void, (lambda at /usr/lib/llvm-14/bin/../include/c++/v1/format:227:7), bool &>'
10. /usr/lib/llvm-14/bin/../include/c++/v1/format:227:7: instantiating function definition 'std::__format::__handle_replacement_field(const char *, const char *, std::basic_format_parse_context<char> &, std::format_context &)::(anonymous class)::operator()<bool>'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/lib/x86_64-linux-gnu/libLLVM-14.so.1(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x31)[0x7f7a4993cd01]
/lib/x86_64-linux-gnu/libLLVM-14.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0xee)[0x7f7a4993aa3e]
/lib/x86_64-linux-gnu/libLLVM-14.so.1(_ZN4llvm3sys15CleanupOnSignalEm+0xfb)[0x7f7a4993c0ab]
/lib/x86_64-linux-gnu/libLLVM-14.so.1(+0xd6bdff)[0x7f7a49868dff]
/lib/x86_64-linux-gnu/libc.so.6(+0x42520)[0x7f7a485e6520]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZNK5clang16TemplateArgument30getNonTypeTemplateArgumentTypeEv+0xb)[0x7f7a5023b21b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1759be6)[0x7f7a50b28be6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17504fc)[0x7f7a50b1f4fc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1758ed3)[0x7f7a50b27ed3]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1758c52)[0x7f7a50b27c52]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x175b98e)[0x7f7a50b2a98e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1750615)[0x7f7a50b1f615]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17546ac)[0x7f7a50b236ac]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x174e695)[0x7f7a50b1d695]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEbNS5_12function_refIFbNS6_INS_8QualTypeEEEEEE+0x6bb)[0x7f7a50b1cf9b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28AddTemplateOverloadCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEbbbNS_8CallExpr11ADLCallKindENS_27OverloadCandidateParamOrderE+0x2b3)[0x7f7a50a1a823]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165c3e5)[0x7f7a50a2b3e5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x166d3ab)[0x7f7a50a3c3ab]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165d452)[0x7f7a50a2c452]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES7_S4_bb+0x21c)[0x7f7a50a2b9cc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x4cc)[0x7f7a5077cc5c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c3ad5)[0x7f7a50b92ad5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17bafb4)[0x7f7a50b89fb4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstExprEPNS_4ExprERKNS_30MultiLevelTemplateArgumentListE+0x4a)[0x7f7a50b77cea]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1250bbf)[0x7f7a5061fbbf]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27CheckConstraintSatisfactionEPKNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEENS5_INS_16TemplateArgumentEEENS_11SourceRangeERNS_22ConstraintSatisfactionE+0x496)[0x7f7a5061a9f6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema22CheckConceptTemplateIdERKNS_12CXXScopeSpecENS_14SourceLocationERKNS_19DeclarationNameInfoEPNS_9NamedDeclEPNS_11ConceptDeclEPKNS_24TemplateArgumentListInfoE+0x15c)[0x7f7a50a9e04c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b6189)[0x7f7a50b85189]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstExprEPNS_4ExprERKNS_30MultiLevelTemplateArgumentListE+0x4a)[0x7f7a50b77cea]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1250bbf)[0x7f7a5061fbbf]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27CheckConstraintSatisfactionEPKNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEENS5_INS_16TemplateArgumentEEENS_11SourceRangeERNS_22ConstraintSatisfactionE+0x496)[0x7f7a5061a9f6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x179e08d)[0x7f7a50b6d08d]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x179d5f2)[0x7f7a50b6c5f2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_38ClassTemplatePartialSpecializationDeclERKNS_20TemplateArgumentListERNS_4sema21TemplateDeductionInfoE+0x328)[0x7f7a50b199e8]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb+0x2b6)[0x7f7a50b7b9b6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1855cae)[0x7f7a50c24cae]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23RequireCompleteTypeImplENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindEPNS0_13TypeDiagnoserE+0x730)[0x7f7a50c18040]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindERNS0_13TypeDiagnoserE+0x12)[0x7f7a50c177e2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindEj+0x2e)[0x7f7a50c1876e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema22ActOnUninitializedDeclEPNS_4DeclE+0x6d6)[0x7f7a50646506]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema30InstantiateVariableInitializerEPNS_7VarDeclES2_RKNS_30MultiLevelTemplateArgumentListE+0x29f)[0x7f7a50bb9f8f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema26BuildVariableInstantiationEPNS_7VarDeclES2_RKNS_30MultiLevelTemplateArgumentListEPN4llvm11SmallVectorINS0_25LateInstantiatedAttributeELj16EEEPNS_11DeclContextEPNS_23LocalInstantiationScopeEbPNS_29VarTemplateSpecializationDeclE+0x646)[0x7f7a50badf46]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator12VisitVarDeclEPNS_7VarDeclEbPN4llvm8ArrayRefIPNS_11BindingDeclEEE+0x25a)[0x7f7a50bad74a]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1816ae4)[0x7f7a50be5ae4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstDeclEPNS_4DeclEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE+0xbe)[0x7f7a50bbb42e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17ce14a)[0x7f7a50b9d14a]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c553f)[0x7f7a50b9453f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17ce6fc)[0x7f7a50b9d6fc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17ce6fc)[0x7f7a50b9d6fc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c553f)[0x7f7a50b9453f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstStmtEPNS_4StmtERKNS_30MultiLevelTemplateArgumentListE+0x4c)[0x7f7a50b7c92c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xd28)[0x7f7a50bbdca8]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema16DeduceReturnTypeEPNS_12FunctionDeclENS_14SourceLocationEb+0xe8)[0x7f7a50b20818]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema17DiagnoseUseOfDeclEPNS_9NamedDeclEN4llvm8ArrayRefINS_14SourceLocationEEEPKNS_17ObjCInterfaceDeclEbbPS7_+0x5d6)[0x7f7a50778476]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165e8e6)[0x7f7a50a2d8e6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28BuildCallToObjectOfClassTypeEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_+0xf4f)[0x7f7a50a3346f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x68c)[0x7f7a5077ce1c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c7066)[0x7f7a50b96066]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema21SubstFunctionDeclTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameEPNS_13CXXRecordDeclENS_10QualifiersE+0x72c)[0x7f7a50b7619c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator17SubstFunctionTypeEPNS_12FunctionDeclERN4llvm15SmallVectorImplIPNS_11ParmVarDeclEEE+0x183)[0x7f7a50bb51f3]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator17VisitFunctionDeclEPNS_12FunctionDeclEPNS_21TemplateParameterListENS0_11RewriteKindE+0x279)[0x7f7a50bb3599]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1816ae4)[0x7f7a50be5ae4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstDeclEPNS_4DeclEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE+0xbe)[0x7f7a50bbb42e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema31FinishTemplateArgumentDeductionEPNS_20FunctionTemplateDeclERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjRPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEPKNS4_INS0_15OriginalCallArgEEEbNS3_12function_refIFbvEEE+0xaa9)[0x7f7a50b1baa9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a0de0)[0x7f7a50b6fde0]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEbNS5_12function_refIFbNS6_INS_8QualTypeEEEEEE+0x9cb)[0x7f7a50b1d2ab]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28AddTemplateOverloadCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEbbbNS_8CallExpr11ADLCallKindENS_27OverloadCandidateParamOrderE+0x2b3)[0x7f7a50a1a823]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165c3e5)[0x7f7a50a2b3e5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27AddOverloadedCallCandidatesEPNS_20UnresolvedLookupExprEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEb+0x12f)[0x7f7a50a2b2bf]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema22buildOverloadedCallSetEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprEN4llvm15MutableArrayRefIS4_EENS_14SourceLocationEPNS_20OverloadCandidateSetEPNS_12ActionResultIS4_Lb1EEE+0xa1)[0x7f7a50a2b5e1]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES7_S4_bb+0x12d)[0x7f7a50a2b8dd]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x4cc)[0x7f7a5077cc5c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c7066)[0x7f7a50b96066]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema21SubstFunctionDeclTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameEPNS_13CXXRecordDeclENS_10QualifiersE+0x72c)[0x7f7a50b7619c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator17SubstFunctionTypeEPNS_12FunctionDeclERN4llvm15SmallVectorImplIPNS_11ParmVarDeclEEE+0x183)[0x7f7a50bb51f3]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator18VisitCXXMethodDeclEPNS_13CXXMethodDeclEPNS_21TemplateParameterListEN4llvm8OptionalIPKNS_27ASTTemplateArgumentListInfoEEENS0_11RewriteKindE+0x3dc)[0x7f7a50bb1d0c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1816ae4)[0x7f7a50be5ae4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstDeclEPNS_4DeclEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE+0xbe)[0x7f7a50bbb42e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema31FinishTemplateArgumentDeductionEPNS_20FunctionTemplateDeclERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjRPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEPKNS4_INS0_15OriginalCallArgEEEbNS3_12function_refIFbvEEE+0xaa9)[0x7f7a50b1baa9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a0de0)[0x7f7a50b6fde0]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEbNS5_12function_refIFbNS6_INS_8QualTypeEEEEEE+0x9cb)[0x7f7a50b1d2ab]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28AddTemplateOverloadCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEbbbNS_8CallExpr11ADLCallKindENS_27OverloadCandidateParamOrderE+0x2b3)[0x7f7a50a1a823]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165c3e5)[0x7f7a50a2b3e5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27AddOverloadedCallCandidatesEPNS_20UnresolvedLookupExprEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEb+0x12f)[0x7f7a50a2b2bf]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema22buildOverloadedCallSetEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprEN4llvm15MutableArrayRefIS4_EENS_14SourceLocationEPNS_20OverloadCandidateSetEPNS_12ActionResultIS4_Lb1EEE+0xa1)[0x7f7a50a2b5e1]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES7_S4_bb+0x12d)[0x7f7a50a2b8dd]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x4cc)[0x7f7a5077cc5c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c7066)[0x7f7a50b96066]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a6129)[0x7f7a50b75129]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameEb+0x64)[0x7f7a50b74df4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator26InstantiateTypedefNameDeclEPNS_15TypedefNameDeclEb+0x6b)[0x7f7a50babcab]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator18VisitTypeAliasDeclEPNS_13TypeAliasDeclE+0x11)[0x7f7a50bacda1]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema16InstantiateClassENS_14SourceLocationEPNS_13CXXRecordDeclES3_RKNS_30MultiLevelTemplateArgumentListENS_26TemplateSpecializationKindEb+0x63b)[0x7f7a50b7a01b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb+0x89e)[0x7f7a50b7bf9e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1855cae)[0x7f7a50c24cae]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23RequireCompleteTypeImplENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindEPNS0_13TypeDiagnoserE+0x730)[0x7f7a50c18040]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindERNS0_13TypeDiagnoserE+0x12)[0x7f7a50c177e2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema26RequireCompleteDeclContextERNS_12CXXScopeSpecEPNS_11DeclContextE+0xe4)[0x7f7a5055fa04]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema33BuildQualifiedDeclarationNameExprERNS_12CXXScopeSpecERKNS_19DeclarationNameInfoEbPKNS_5ScopeEPPNS_14TypeSourceInfoE+0x65)[0x7f7a50783855]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c03ba)[0x7f7a50b8f3ba]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17bf324)[0x7f7a50b8e324]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17bde30)[0x7f7a50b8ce30]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17cae96)[0x7f7a50b99e96]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a6129)[0x7f7a50b75129]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19SubstBaseSpecifiersEPNS_13CXXRecordDeclES2_RKNS_30MultiLevelTemplateArgumentListE+0x273)[0x7f7a50b79623]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema16InstantiateClassENS_14SourceLocationEPNS_13CXXRecordDeclES3_RKNS_30MultiLevelTemplateArgumentListENS_26TemplateSpecializationKindEb+0x49b)[0x7f7a50b79e7b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb+0x89e)[0x7f7a50b7bf9e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1855cae)[0x7f7a50c24cae]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23RequireCompleteTypeImplENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindEPNS0_13TypeDiagnoserE+0x730)[0x7f7a50c18040]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindERNS0_13TypeDiagnoserE+0x12)[0x7f7a50c177e2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema18CheckBaseSpecifierEPNS_13CXXRecordDeclENS_11SourceRangeEbNS_15AccessSpecifierEPNS_14TypeSourceInfoENS_14SourceLocationE+0x365)[0x7f7a506d6d35]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19SubstBaseSpecifiersEPNS_13CXXRecordDeclES2_RKNS_30MultiLevelTemplateArgumentListE+0x43f)[0x7f7a50b797ef]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema16InstantiateClassENS_14SourceLocationEPNS_13CXXRecordDeclES3_RKNS_30MultiLevelTemplateArgumentListENS_26TemplateSpecializationKindEb+0x49b)[0x7f7a50b79e7b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb+0x89e)[0x7f7a50b7bf9e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1855cae)[0x7f7a50c24cae]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23RequireCompleteTypeImplENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindEPNS0_13TypeDiagnoserE+0x730)[0x7f7a50c18040]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeENS0_16CompleteTypeKindERNS0_13TypeDiagnoserE+0x12)[0x7f7a50c177e2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema26RequireCompleteDeclContextERNS_12CXXScopeSpecEPNS_11DeclContextE+0xe4)[0x7f7a5055fa04]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema17CheckTypenameTypeENS_21ElaboratedTypeKeywordENS_14SourceLocationENS_22NestedNameSpecifierLocERKNS_14IdentifierInfoES2_b+0x90)[0x7f7a50aac270]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c5771)[0x7f7a50b94771]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a6129)[0x7f7a50b75129]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstTypeENS_8QualTypeERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameE+0x7b)[0x7f7a50b75a1b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema19CheckTemplateIdTypeENS_12TemplateNameENS_14SourceLocationERNS_24TemplateArgumentListInfoE+0x333)[0x7f7a50a96313]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17be5c9)[0x7f7a50b8d5c9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17cae96)[0x7f7a50b99e96]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema21SubstFunctionDeclTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameEPNS_13CXXRecordDeclENS_10QualifiersE+0x523)[0x7f7a50b75f93]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator17SubstFunctionTypeEPNS_12FunctionDeclERN4llvm15SmallVectorImplIPNS_11ParmVarDeclEEE+0x183)[0x7f7a50bb51f3]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang24TemplateDeclInstantiator17VisitFunctionDeclEPNS_12FunctionDeclEPNS_21TemplateParameterListENS0_11RewriteKindE+0x279)[0x7f7a50bb3599]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x1816ae4)[0x7f7a50be5ae4]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstDeclEPNS_4DeclEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE+0xbe)[0x7f7a50bbb42e]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema31FinishTemplateArgumentDeductionEPNS_20FunctionTemplateDeclERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjRPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEPKNS4_INS0_15OriginalCallArgEEEbNS3_12function_refIFbvEEE+0xaa9)[0x7f7a50b1baa9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17a0de0)[0x7f7a50b6fde0]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoEbNS5_12function_refIFbNS6_INS_8QualTypeEEEEEE+0x9cb)[0x7f7a50b1d2ab]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28AddTemplateOverloadCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_24TemplateArgumentListInfoEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEbbbNS_8CallExpr11ADLCallKindENS_27OverloadCandidateParamOrderE+0x2b3)[0x7f7a50a1a823]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165c3e5)[0x7f7a50a2b3e5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27AddOverloadedCallCandidatesEPNS_20UnresolvedLookupExprEN4llvm8ArrayRefIPNS_4ExprEEERNS_20OverloadCandidateSetEb+0x12f)[0x7f7a50a2b2bf]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema22buildOverloadedCallSetEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprEN4llvm15MutableArrayRefIS4_EENS_14SourceLocationEPNS_20OverloadCandidateSetEPNS_12ActionResultIS4_Lb1EEE+0xa1)[0x7f7a50a2b5e1]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES7_S4_bb+0x12d)[0x7f7a50a2b8dd]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x4cc)[0x7f7a5077cc5c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17aed57)[0x7f7a50b7dd57]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17d14b5)[0x7f7a50ba04b5]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17d172d)[0x7f7a50ba072d]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c553f)[0x7f7a50b9453f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17d18aa)[0x7f7a50ba08aa]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c553f)[0x7f7a50b9453f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstStmtEPNS_4StmtERKNS_30MultiLevelTemplateArgumentListE+0x4c)[0x7f7a50b7c92c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xd28)[0x7f7a50bbdca8]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema27runWithSufficientStackSpaceENS_14SourceLocationEN4llvm12function_refIFvvEEE+0x3c)[0x7f7a504eabbc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema16DeduceReturnTypeEPNS_12FunctionDeclENS_14SourceLocationEb+0xe8)[0x7f7a50b20818]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema17DiagnoseUseOfDeclEPNS_9NamedDeclEN4llvm8ArrayRefINS_14SourceLocationEEEPKNS_17ObjCInterfaceDeclEbbPS7_+0x5d6)[0x7f7a50778476]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x165cad6)[0x7f7a50a2bad6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES7_S4_bb+0x21c)[0x7f7a50a2b9cc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13BuildCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_bb+0x4cc)[0x7f7a5077cc5c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEN4llvm15MutableArrayRefIS4_EES5_S4_+0x47)[0x7f7a50793e47]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17b55b9)[0x7f7a50b845b9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17ad9b2)[0x7f7a50b7c9b2]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x17c553f)[0x7f7a50b9453f]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema9SubstStmtEPNS_4StmtERKNS_30MultiLevelTemplateArgumentListE+0x4c)[0x7f7a50b7c92c]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xd28)[0x7f7a50bbdca8]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28PerformPendingInstantiationsEb+0x289)[0x7f7a50bc00d9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xe4b)[0x7f7a50bbddcb]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28PerformPendingInstantiationsEb+0x289)[0x7f7a50bc00d9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xe4b)[0x7f7a50bbddcb]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28PerformPendingInstantiationsEb+0x289)[0x7f7a50bc00d9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbbb+0xe4b)[0x7f7a50bbddcb]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema28PerformPendingInstantiationsEb+0x289)[0x7f7a50bc00d9]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema33ActOnEndOfTranslationUnitFragmentENS0_14TUFragmentKindE+0x18b)[0x7f7a504ec60b]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang4Sema25ActOnEndOfTranslationUnitEv+0x161)[0x7f7a504ecc71]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang6Parser17ParseTopLevelDeclERNS_9OpaquePtrINS_12DeclGroupRefEEEb+0x526)[0x7f7a4fe90c96]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang8ParseASTERNS_4SemaEbb+0x2fd)[0x7f7a4fdd38ed]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang13CodeGenAction13ExecuteActionEv+0xb1)[0x7f7a50f47b71]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang14FrontendAction7ExecuteEv+0x67)[0x7f7a518e3b57]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE+0x336)[0x7f7a5183b3a6]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang25ExecuteCompilerInvocationEPNS_16CompilerInstanceE+0x29b)[0x7f7a5195d45b]
/usr/bin/clang++(_Z8cc1_mainN4llvm8ArrayRefIPKcEES2_Pv+0x99b)[0x41328b]
/usr/bin/clang++[0x4114bc]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(+0x20eaed2)[0x7f7a514b9ed2]
/lib/x86_64-linux-gnu/libLLVM-14.so.1(_ZN4llvm20CrashRecoveryContext9RunSafelyENS_12function_refIFvvEEE+0xdd)[0x7f7a49868b6d]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZNK5clang6driver10CC1Command7ExecuteEN4llvm8ArrayRefINS2_8OptionalINS2_9StringRefEEEEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPb+0x140)[0x7f7a514b99c0]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZNK5clang6driver11Compilation14ExecuteCommandERKNS0_7CommandERPS3_+0x3f3)[0x7f7a51484183]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZNK5clang6driver11Compilation11ExecuteJobsERKNS0_7JobListERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x8a)[0x7f7a5148440a]
/lib/x86_64-linux-gnu/libclang-cpp.so.14(_ZN5clang6driver6Driver18ExecuteCompilationERNS0_11CompilationERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x1a7)[0x7f7a5149e507]
/usr/bin/clang++(main+0x2816)[0x410f26]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7f7a485cdd90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7f7a485cde40]
/usr/bin/clang++(_start+0x25)[0x40e3b5]
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg:
******************** |
agozillon
pushed a commit
to agozillon/llvm-project
that referenced
this issue
Feb 5, 2024
…Candidate (llvm#80395) This is yet another one-line patch to fix crashes on constraint substitution. ```cpp template <class, class> struct formatter; template <class, class> struct basic_format_context {}; template <typename CharType> concept has_format_function = format(basic_format_context<CharType, CharType>()); template <typename ValueType, typename CharType> requires has_format_function<CharType> struct formatter<ValueType, CharType> { template <typename OutputIt> CharType format(basic_format_context<OutputIt, CharType>); }; ``` In this case, we would build up a `RecoveryExpr` for a call within a constraint expression due to the absence of viable functions. The heuristic algorithm attempted to find such a function inside of a ClassTemplatePartialSpecialization, from which we started to substitute its requires-expression, and it succeeded with a FunctionTemplate such that 1) It has only one parameter, which is dependent. 2) The only one parameter depends on two template parameters. They are, in canonical form, `<template-parameter-1-0>` and `<template-parameter-0-1>` respectively. Before we emit an error, we still want to recover the most viable functions. This goes downhill to deducing template parameters against its arguments, where we would collect the argument type with the same depth as the parameter type into a Deduced set. The size of the set is presumed to be that of function template parameters, which is 1 in this case. However, since we haven't yet properly set the template depth before the dance, we'll end up putting the type for `<template-parameter-0-1>` to the second position of Deduced set, which is unfortunately an access violation! The bug seems to appear since clang 12.0. This fixes [the case](llvm#58548 (comment)).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
c++20
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
concepts
C++20 concepts
crash-on-valid
Ubuntu 22.04
diagnostic_data.zip
The text was updated successfully, but these errors were encountered: