-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
clang-17 ICE on invalid code in clang::Expr::EvaluateAsConstantExpr
#77250
Comments
@llvm/issue-subscribers-clang-frontend Author: Eric Niebler (ericniebler)
Files attached
[hello_world-57224b.zip](https://github.com/llvm/llvm-project/files/13854662/hello_world-57224b.zip)
<details>
</details> |
The assertion we hit is the usual one about dependent expressions in the constexpr evaluator. The expression in question is: RequiresExpr 0x7fff64773878 '_Bool'
|-ParmVarDecl 0x7fff64773018 referenced __fun 'class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14) &&'
|-ParmVarDecl 0x7fff647730a8 referenced __as 'struct stdexec::__let::__let_t<struct stdexec::__receivers::set_value_t> &&'
|-ParmVarDecl 0x7fff64773138 referenced __as 'class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41) &&'
|-ParmVarDecl 0x7fff647731c8 referenced __as 'struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&'
`-SimpleRequirement 0x7fff64773840 dependent
`-CXXOperatorCallExpr 0x7fff647737f0 'auto' '()'
|-ImplicitCastExpr 0x7fff64773688 'auto (*)(__ignore, class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41) &&, struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&) const' <FunctionToPointerDecay>
| `-DeclRefExpr 0x7fff64773660 'auto (__ignore, class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41) &&, struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&) const' lvalue CXXMethod 0x7fff64734a50 'operator()' 'auto (__ignore, class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41) &&, struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&) const'
|-ImplicitCastExpr 0x7fff647736a8 'const class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14)' xvalue <NoOp>
| `-ParenExpr 0x7fff64773308 'class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14)' xvalue
| `-CStyleCastExpr 0x7fff647732d8 'class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14)' xvalue <NoOp>
| `-DeclRefExpr 0x7fff64773250 'class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14)' lvalue ParmVar 0x7fff64773018 '__fun' 'class (lambda at /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3511:14) &&' non_odr_use_unevaluated
|-ImplicitCastExpr 0x7fff647737d0 '__ignore':'struct stdexec::__ignore' <ConstructorConversion>
| `-CXXConstructExpr 0x7fff64773798 '__ignore':'struct stdexec::__ignore' 'void (struct stdexec::__let::__let_t<struct stdexec::__receivers::set_value_t> &&) noexcept'
| `-CStyleCastExpr 0x7fff64773390 'struct stdexec::__let::__let_t<struct stdexec::__receivers::set_value_t>' xvalue <NoOp>
| `-DeclRefExpr 0x7fff64773348 'struct stdexec::__let::__let_t<struct stdexec::__receivers::set_value_t>' lvalue ParmVar 0x7fff647730a8 '__as' 'struct stdexec::__let::__let_t<struct stdexec::__receivers::set_value_t> &&' non_odr_use_unevaluated
|-CStyleCastExpr 0x7fff64773420 'class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41)' xvalue <NoOp>
| `-DeclRefExpr 0x7fff647733d8 'class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41)' lvalue ParmVar 0x7fff64773138 '__as' 'class (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41) &&' non_odr_use_unevaluated
`-CStyleCastExpr 0x7fff647734b0 'struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>' xvalue <NoOp>
`-DeclRefExpr 0x7fff64773468 'struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>' lvalue ParmVar 0x7fff647731c8 '__as' 'struct stdexec::__sexpr<class (lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&' non_odr_use_unevaluated
|
Confirmed on post-18 trunk: https://godbolt.org/z/3b8fdajsq template < class >
template < class _Tp >
using __copy_cvref_fn = _Tp;
struct __sexpr {
template < class _Sender>
auto apply(_Sender) -> __copy_cvref_fn < _Sender >;
};
struct __sexpr_apply_t {
auto operator()() -> decltype(__sexpr{}.apply(0));
};
template < class _Fun >
concept __callable = requires (_Fun __fun) {
__fun();
};
void transform_sender() {
__callable< __sexpr_apply_t>;
} Backtrace:
|
@llvm/issue-subscribers-c-20 Author: Eric Niebler (ericniebler)
Files attached
[hello_world-57224b.zip](https://github.com/llvm/llvm-project/files/13854662/hello_world-57224b.zip)
<details>
</details> |
Looks related to: #67058 Although, the code is not totally similar and that one is a crash on valid. |
template < class >
template < class _Tp >
using __copy_cvref_fn = _Tp;
struct __sexpr {
template < class _Sender>
auto apply(_Sender) -> __copy_cvref_fn < _Sender >;
}; We ended up substituting into type alias llvm-project/clang/lib/Sema/SemaTemplate.cpp Lines 4019 to 4021 in 60a904b
We can avoid the bogus substitution and the subsequent constraint check if the type alias Decl, as well as its underlying Decl, were set to invalid. llvm-project/clang/lib/Sema/SemaTemplate.cpp Lines 4002 to 4005 in 60a904b
And we're not doing that currently. llvm-project/clang/lib/Sema/SemaDeclCXX.cpp Lines 13573 to 13582 in 60a904b
llvm-project/clang/lib/Sema/SemaDeclCXX.cpp Lines 13645 to 13650 in 60a904b
We would have these diagnostics then: /tmp/issue-77250.cpp:3:39: error: extraneous template parameter list in alias template declaration
3 | template <class> template <class _Tp> using __copy_cvref_fn = _Tp;
| ~~~~~~~~~~~~~~~~~~~~ ^
/tmp/issue-77250.cpp:10:43: error: no matching member function for call to 'apply'
10 | auto operator()() -> decltype(__sexpr{}.apply(0));
| ~~~~~~~~~~^~~~~
/tmp/issue-77250.cpp:16:27: warning: expression result unused [-Wunused-value]
16 | void transform_sender() { __callable<__sexpr_apply_t>; }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 2 errors generated. Unfortunately, this still doesn't fix the crash from the report. The crashing parsing stack is as follows, with a different stacktrace from @Endilll's reduced example -- I suspect there are two (or more) issues here! stacktrace
1. /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:57: current parser token ')'
2. /home/eniebler/Code/stdexec/examples/hello_world.cpp:26:12: parsing function body 'main'
3. /home/eniebler/Code/stdexec/examples/hello_world.cpp:26:12: in compound statement ('{}')
4. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:5386:12: instantiating class definition 'stdexec::__sync_wait::__value_tuple_for<stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>>'
5. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:730:19: instantiating function definition 'stdexec::__get_completion_signatures::get_completion_signatures_t::__impl<stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
6. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:624:9: instantiating function definition 'stdexec::__domain::__transform_dependent_sender::operator()<stdexec::default_domain, stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
7. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:650:36: instantiating function definition 'stdexec::dependent_domain::transform_sender<stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
8. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:657:7: instantiating function definition 'stdexec::dependent_domain::transform_sender(stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)> &&, const stdexec::__sync_wait::__env &)::(anonymous class)::operator()<stdexec::__let::__let_t<stdexec::__receivers::set_value_t>, (lambda at /home/eniebler/Code/stdexec/examples/hello_world.cpp:28:41), stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>>'
9. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:603:9: instantiating function definition 'stdexec::__domain::__transform_sender::operator()<stdexec::__domain::__transform_sender, stdexec::default_domain, stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
10. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:587:9: instantiating function definition 'stdexec::__domain::__transform_sender_1::operator()<stdexec::default_domain, stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
11. /home/eniebler/Code/stdexec/include/stdexec/__detail/__domain.hpp:100:20: instantiating function definition 'stdexec::default_domain::transform_sender<stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>'
12. /home/eniebler/Code/stdexec/include/stdexec/execution.hpp:3581:29: instantiating function definition 'stdexec::__let::__let_t<stdexec::__receivers::set_value_t>::transform_sender<stdexec::__sexpr<(lambda at /home/eniebler/Code/stdexec/include/stdexec/__detail/__basic_sender.hpp:578:18)>, stdexec::__sync_wait::__env>' clang: /repo/llvm-project/clang/lib/AST/ExprConstant.cpp:15739: bool clang::Expr::EvaluateAsConstantExpr(EvalResult &, const ASTContext &, ConstantExprKind) const: Assertion `!isValueDependent() && "Expression evaluator can't be called on a dependent expression."' failed.
#9 0x00007f72217a4d51 clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext const&, clang::Expr::ConstantExprKind) const /repo/llvm-project/clang/lib/AST/ExprConstant.cpp:0:3
#10 0x00007f721fc0f413 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:289:71
#11 0x00007f721fc0eedc calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:339:10
#12 0x00007f721fc08516 CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:454:22
#13 0x00007f721fc08213 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:509:7
#14 0x00007f721fc757f4 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/include/clang/Sema/Sema.h:7678:12
#15 0x00007f7220932e9b clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:5030:7
#16 0x00007f7220c50714 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildConceptSpecializationExpr(clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::DeclarationNameInfo, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:3630:35
#17 0x00007f7220c32eb5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13149:23
#18 0x00007f7220c22092 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:494:1
#19 0x00007f7220c21281 clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4250:23
#20 0x00007f7220c22d25 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4258:10
#21 0x00007f721fc1022a calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0::operator()(clang::Expr const*) const /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:369:17
#22 0x00007f721fc0f180 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:250:38
#23 0x00007f721fc0eedc calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:339:10
#24 0x00007f721fc08516 CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:454:22
#25 0x00007f721fc08213 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:509:7
#26 0x00007f721fc0ab22 clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation, clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:953:3
#27 0x00007f7220b0697f 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 ()>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:3793:9
#28 0x00007f7220c02899 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4474:14
#29 0x00007f7220c027b5 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#30 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#31 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#32 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#33 0x00007f7220b08e5b clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4481:10
#34 0x00007f72207ecef6 clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::TemplateArgumentListInfo*, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, clang::OverloadCandidateParamOrder) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:7630:31
#35 0x00007f72207edaa8 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, clang::OverloadCandidateParamOrder) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:7424:3
#36 0x00007f722080cd16 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:15658:25
#37 0x00007f7220078239 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7254:14
#38 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#39 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#40 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#41 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#42 0x00007f7220c57c94 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6503:31
#43 0x00007f7220c1864e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:36:1
#44 0x00007f7220c17d0f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4939:34
#45 0x00007f7220c19791 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::QualType) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4918:19
#46 0x00007f7220c196d5 clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2784:23
#47 0x00007f722092adb7 clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:4024:9
#48 0x00007f7220c53b0c clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildTemplateSpecializationType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:15500:18
#49 0x00007f7220c528d1 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7059:18
#50 0x00007f7220c5dbaa clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6807:23
#51 0x00007f7220c1922e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:73:1
#52 0x00007f7220c59acf clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformElaboratedType(clang::TypeLocBuilder&, clang::ElaboratedTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7166:34
#53 0x00007f7220c189a5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:46:1
#54 0x00007f7220c63f7e clang::QualType clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformFunctionProtoType<clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0>(clang::TypeLocBuilder&, clang::FunctionProtoTypeLoc, clang::CXXRecordDecl*, clang::Qualifiers, clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6179:33
#55 0x00007f7220c19d1a clang::QualType (anonymous namespace)::TemplateInstantiator::TransformFunctionProtoType<clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0>(clang::TypeLocBuilder&, clang::FunctionProtoTypeLoc, clang::CXXRecordDecl*, clang::Qualifiers, clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2303:21
#56 0x00007f7220c199d5 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2844:27
#57 0x00007f7220ca8340 clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl<clang::ParmVarDecl*>&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4462:19
#58 0x00007f7220ca430b clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*, clang::TemplateParameterList*, clang::TemplateDeclInstantiator::RewriteKind) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2507:19
#59 0x00007f7220ca96c3 clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3791:3
#60 0x00007f7220afda51 clang::declvisitor::Base<std::add_pointer, clang::TemplateDeclInstantiator, clang::Decl*>::Visit(clang::Decl*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/DeclNodes.inc:242:1
#61 0x00007f7220d19394 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4066:27
#62 0x00007f7220d19365 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#63 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#64 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#65 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#66 0x00007f7220caf997 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4068:10
#67 0x00007f7220b067bf 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 ()>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:3760:7
#68 0x00007f7220c02899 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4474:14
#69 0x00007f7220c027b5 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#70 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#71 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#72 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#73 0x00007f7220b08e5b clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4481:10
#74 0x00007f72207ecef6 clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::TemplateArgumentListInfo*, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, clang::OverloadCandidateParamOrder) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:7630:31
#75 0x00007f722080af2e clang::Sema::BuildCallToMemberFunction(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:0:9
#76 0x00007f7220078672 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7284:14
#77 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#78 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#79 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#80 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#81 0x00007f7220c57c94 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6503:31
#82 0x00007f7220c1864e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:36:1
#83 0x00007f7220c63f7e clang::QualType clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformFunctionProtoType<clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0>(clang::TypeLocBuilder&, clang::FunctionProtoTypeLoc, clang::CXXRecordDecl*, clang::Qualifiers, clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6179:33
#84 0x00007f7220c19d1a clang::QualType (anonymous namespace)::TemplateInstantiator::TransformFunctionProtoType<clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0>(clang::TypeLocBuilder&, clang::FunctionProtoTypeLoc, clang::CXXRecordDecl*, clang::Qualifiers, clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool)::$_0) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2303:21
#85 0x00007f7220c199d5 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2844:27
#86 0x00007f7220ca8340 clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl<clang::ParmVarDecl*>&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4462:19
#87 0x00007f7220ca430b clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*, clang::TemplateParameterList*, clang::TemplateDeclInstantiator::RewriteKind) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2507:19
#88 0x00007f7220ca96c3 clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3791:3
#89 0x00007f7220afda51 clang::declvisitor::Base<std::add_pointer, clang::TemplateDeclInstantiator, clang::Decl*>::Visit(clang::Decl*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/DeclNodes.inc:242:1
#90 0x00007f7220d19394 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4066:27
#91 0x00007f7220d19365 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#92 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#93 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#94 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#95 0x00007f7220caf997 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4068:10
#96 0x00007f7220b067bf 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 ()>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:3760:7
#97 0x00007f7220c02899 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4474:14
#98 0x00007f7220c027b5 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_2>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#99 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#100 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#101 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#102 0x00007f7220b08e5b clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4481:10
#103 0x00007f72207ecef6 clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::TemplateArgumentListInfo*, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, clang::OverloadCandidateParamOrder) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:7630:31
#104 0x00007f72207edaa8 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, clang::OverloadCandidateParamOrder) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:7424:3
#105 0x00007f722080cd16 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:15658:25
#106 0x00007f7220078239 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7254:14
#107 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#108 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#109 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#110 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#111 0x00007f7220c22f9e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformInitializer(clang::Expr*, bool) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4147:25
#112 0x00007f7220c65798 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformReturnStmt(clang::ReturnStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:8092:36
#113 0x00007f7220c1f4a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:920:1
#114 0x00007f7220c3be26 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7681:38
#115 0x00007f7220c6ba47 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7663:23
#116 0x00007f7220c2066f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1526:1
#117 0x00007f7220c1f223 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4230:23
#118 0x00007f7220cb1ad1 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5191:14
#119 0x00007f7220c02c54 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5299:5
#120 0x00007f7220c02c15 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#121 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#122 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#123 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#124 0x00007f7220b0eac7 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5302:25
#125 0x00007f7220071949 clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool, bool, clang::ObjCInterfaceDecl*, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:307:9
#126 0x00007f721ff9f335 clang::Sema::DiagnoseUseOfOverloadedDecl(clang::NamedDecl*, clang::SourceLocation) /repo/llvm-project/clang/include/clang/Sema/Sema.h:5599:5
#127 0x00007f722080b0f6 clang::Sema::BuildCallToMemberFunction(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:15471:11
#128 0x00007f7220078672 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7284:14
#129 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#130 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#131 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#132 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#133 0x00007f7220c40537 (anonymous namespace)::TemplateInstantiator::TransformExprRequirement(clang::concepts::ExprRequirement*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2577:31
#134 0x00007f7220c3ea34 (anonymous namespace)::TemplateInstantiator::TransformRequiresExprRequirements(llvm::ArrayRef<clang::concepts::Requirement*>, llvm::SmallVectorImpl<clang::concepts::Requirement*>&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1652:22
#135 0x00007f7220c3e36e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformRequiresExpr(clang::RequiresExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13190:7
#136 0x00007f7220c2b812 (anonymous namespace)::TemplateInstantiator::TransformRequiresExpr(clang::RequiresExpr*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1624:40
#137 0x00007f7220c21578 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:122:1
#138 0x00007f7220c21281 clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4250:23
#139 0x00007f7220c22d25 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4258:10
#140 0x00007f721fc1022a calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0::operator()(clang::Expr const*) const /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:369:17
#141 0x00007f721fc0f180 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:250:38
#142 0x00007f721fc0eedc calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:339:10
#143 0x00007f721fc08516 CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:454:22
#144 0x00007f721fc08213 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:509:7
#145 0x00007f721fc757f4 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/include/clang/Sema/Sema.h:7678:12
#146 0x00007f7220932e9b clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:5030:7
#147 0x00007f7220c50714 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildConceptSpecializationExpr(clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::DeclarationNameInfo, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:3630:35
#148 0x00007f7220c32eb5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13149:23
#149 0x00007f7220c22092 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:494:1
#150 0x00007f7220c21281 clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4250:23
#151 0x00007f7220c22d25 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4258:10
#152 0x00007f721fc1022a calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0::operator()(clang::Expr const*) const /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:369:17
#153 0x00007f721fc0f180 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:250:38
#154 0x00007f721fc0f036 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:217:25
#155 0x00007f721fc0eedc calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:339:10
#156 0x00007f721fc08516 CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:454:22
#157 0x00007f721fc08213 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:509:7
#158 0x00007f721fc757f4 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/include/clang/Sema/Sema.h:7678:12
#159 0x00007f7220932e9b clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:5030:7
#160 0x00007f7220c50714 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildConceptSpecializationExpr(clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::DeclarationNameInfo, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:3630:35
#161 0x00007f7220c32eb5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13149:23
#162 0x00007f7220c22092 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:494:1
#163 0x00007f7220c6d8e2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCondition(clang::SourceLocation, clang::VarDecl*, clang::Expr*, clang::Sema::ConditionKind) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4329:40
#164 0x00007f7220c69f03 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformIfStmt(clang::IfStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7866:10
#165 0x00007f7220c204e7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1478:1
#166 0x00007f7220c3be26 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7681:38
#167 0x00007f7220c6ba47 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7663:23
#168 0x00007f7220c2066f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1526:1
#169 0x00007f7220c1f223 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4230:23
#170 0x00007f7220cb1ad1 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5191:14
#171 0x00007f7220c02c54 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5299:5
#172 0x00007f7220c02c15 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#173 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#174 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#175 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#176 0x00007f7220b0eac7 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5302:25
#177 0x00007f7220071949 clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool, bool, clang::ObjCInterfaceDecl*, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:307:9
#178 0x00007f721ff9f335 clang::Sema::DiagnoseUseOfOverloadedDecl(clang::NamedDecl*, clang::SourceLocation) /repo/llvm-project/clang/include/clang/Sema/Sema.h:5599:5
#179 0x00007f722080b0f6 clang::Sema::BuildCallToMemberFunction(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:15471:11
#180 0x00007f72200783b1 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7264:14
#181 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#182 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#183 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#184 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#185 0x00007f7220c40537 (anonymous namespace)::TemplateInstantiator::TransformExprRequirement(clang::concepts::ExprRequirement*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2577:31
#186 0x00007f7220c3ea34 (anonymous namespace)::TemplateInstantiator::TransformRequiresExprRequirements(llvm::ArrayRef<clang::concepts::Requirement*>, llvm::SmallVectorImpl<clang::concepts::Requirement*>&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1652:22
#187 0x00007f7220c3e36e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformRequiresExpr(clang::RequiresExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13190:7
#188 0x00007f7220c2b812 (anonymous namespace)::TemplateInstantiator::TransformRequiresExpr(clang::RequiresExpr*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1624:40
#189 0x00007f7220c21578 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:122:1
#190 0x00007f7220c21281 clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4250:23
#191 0x00007f7220c22d25 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4258:10
#192 0x00007f721fc1022a calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0::operator()(clang::Expr const*) const /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:369:17
#193 0x00007f721fc0f180 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_0&&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:250:38
#194 0x00007f721fc0eedc calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:339:10
#195 0x00007f721fc08516 CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:454:22
#196 0x00007f721fc08213 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/lib/Sema/SemaConcept.cpp:509:7
#197 0x00007f721fc757f4 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) /repo/llvm-project/clang/include/clang/Sema/Sema.h:7678:12
#198 0x00007f7220932e9b clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:5030:7
#199 0x00007f7220c50714 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildConceptSpecializationExpr(clang::NestedNameSpecifierLoc, clang::SourceLocation, clang::DeclarationNameInfo, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:3630:35
#200 0x00007f7220c32eb5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:13149:23
#201 0x00007f7220c22092 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:494:1
#202 0x00007f7220c6d8e2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCondition(clang::SourceLocation, clang::VarDecl*, clang::Expr*, clang::Sema::ConditionKind) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4329:40
#203 0x00007f7220c69f03 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformIfStmt(clang::IfStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7866:10
#204 0x00007f7220c204e7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1478:1
#205 0x00007f7220c3be26 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7681:38
#206 0x00007f7220c6ba47 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7663:23
#207 0x00007f7220c2066f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1526:1
#208 0x00007f7220c1f223 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4230:23
#209 0x00007f7220cb1ad1 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5191:14
#210 0x00007f7220c02c54 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5299:5
#211 0x00007f7220c02c15 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#212 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#213 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#214 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#215 0x00007f7220b0eac7 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5302:25
#216 0x00007f7220071949 clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool, bool, clang::ObjCInterfaceDecl*, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:307:9
#217 0x00007f7220803c50 CreateFunctionRefExpr(clang::Sema&, clang::FunctionDecl*, clang::NamedDecl*, clang::Expr const*, bool, clang::SourceLocation, clang::DeclarationNameLoc const&) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:72:7
#218 0x00007f722080dc21 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) /repo/llvm-project/clang/lib/Sema/SemaOverload.cpp:15824:22
#219 0x00007f7220078239 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7254:14
#220 0x00007f7220098bef clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/SemaExpr.cpp:7172:7
#221 0x00007f7220c51312 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildCallExpr(clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:2813:22
#222 0x00007f7220c33c2f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:11634:23
#223 0x00007f7220c22340 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:602:1
#224 0x00007f7220c57c94 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6503:31
#225 0x00007f7220c1864e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:36:1
#226 0x00007f7220c17d0f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4939:34
#227 0x00007f7220c19791 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::QualType) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4918:19
#228 0x00007f7220c196d5 clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2784:23
#229 0x00007f722092adb7 clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) /repo/llvm-project/clang/lib/Sema/SemaTemplate.cpp:4024:9
#230 0x00007f7220c53b0c clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildTemplateSpecializationType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:15500:18
#231 0x00007f7220c528d1 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7059:18
#232 0x00007f7220c5dbaa clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:6807:23
#233 0x00007f7220c1922e clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:73:1
#234 0x00007f7220c59acf clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformElaboratedType(clang::TypeLocBuilder&, clang::ElaboratedTypeLoc) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7166:34
#235 0x00007f7220c189a5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/TypeNodes.inc:46:1
#236 0x00007f7220c17d0f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:4939:34
#237 0x00007f7220c177d9 clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:2737:41
#238 0x00007f7220c9c312 clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(clang::TypedefNameDecl*, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:986:8
#239 0x00007f7220c9ded6 clang::TemplateDeclInstantiator::VisitTypeAliasDecl(clang::TypeAliasDecl*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:1068:9
#240 0x00007f7220afdce5 clang::declvisitor::Base<std::add_pointer, clang::TemplateDeclInstantiator, clang::Decl*>::Visit(clang::Decl*) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/DeclNodes.inc:466:1
#241 0x00007f7220d19394 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4066:27
#242 0x00007f7220d19365 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0>(long) /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#243 0x00007f7219b74be9 llvm::function_ref<void ()>::operator()() const /repo/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#244 0x00007f721f8b028d clang::runWithSufficientStackSpace(llvm::function_ref<void ()>, llvm::function_ref<void ()>) /repo/llvm-project/clang/include/clang/Basic/Stack.h:52:3
#245 0x00007f721f89cc50 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) /repo/llvm-project/clang/lib/Sema/Sema.cpp:514:1
#246 0x00007f7220caf997 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:4068:10
#247 0x00007f7220c6da94 (anonymous namespace)::TemplateInstantiator::TransformDefinition(clang::SourceLocation, clang::Decl*) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1762:9
#248 0x00007f7220c6ac8f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclStmt(clang::DeclStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:8108:11
#249 0x00007f7220c205ab clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1502:1
#250 0x00007f7220c3be26 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7681:38
#251 0x00007f7220c6ba47 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*) /repo/llvm-project/clang/lib/Sema/TreeTransform.h:7663:23
#252 0x00007f7220c2066f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /repo/llvm-project-Build/BuildDebug/tools/clang/include/clang/AST/StmtNodes.inc:1526:1
#253 0x00007f7220c1f223 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4230:23
#254 0x00007f7220cb1ad1 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /repo/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5191:14
#255 0x00007f7220c02c54 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool)::$_1::operator()() const /repo/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:5299:5 |
Reduced by me and C-Reduce (https://godbolt.org/z/sx3znYhP9): template < class >
concept _Ok = true;
template < bool >
struct __i {};
void __for_all_sigs_();
template < class _Variant >
using __for_all_sigs = __i< _Ok< decltype(__for_all_sigs_((_Variant *)0)) > >;
auto transform_sender_fn() -> __for_all_sigs<int>;
template < int >
requires requires { transform_sender_fn(); }
auto tuple() -> decltype(transform_sender_fn());
using T = decltype(tuple<0>()); Clang 20.0 crash:
|
Another reduction that triggers the same assertion (https://godbolt.org/z/W31qe9jYa): struct __sexpr_uncurry_fn {
void operator()();
};
auto __make_tuple = []< class _Cvref, class _Fun >(_Cvref, _Fun) -> void
requires requires { _Fun{}(); } {};
template < class _As >
using __call_result_t = decltype(__make_tuple(0, _As{}));
using T = __call_result_t< __sexpr_uncurry_fn >; Clang 20.0 crash is slightly different from the previous reduction:
|
I don't know how many issues are there, but I ran into three more crashes while re-reducing this one, and then one of them lead me back to the crash in this issue. (Hence two reductions.) |
@Endilll note the original reduction no longer crashes in trunk: https://godbolt.org/z/3b8fdajsq |
Yes, but original reproduce is still crashing. Which was the reason Corentin pointed me out to this issue again. |
Files attached
hello_world-57224b.zip
Click to view stack trace
The text was updated successfully, but these errors were encountered: