Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

Complex nested lambda crashes Clang frontend #42090

Open Quuxplusone opened 5 years ago

Quuxplusone commented 5 years ago
Bugzilla Link PR43120
Status CONFIRMED
Importance P normal
Reported by Jonathan Barnard (jonathan.barnard@grasshopperasia.com)
Reported on 2019-08-27 02:04:35 -0700
Last modified on 2021-10-29 07:26:05 -0700
Version 8.0
Hardware PC Linux
CC aaron@aaronballman.com, blitzrakete@gmail.com, dgregor@apple.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, mizvekov@gmail.com, richard-llvm@metafoo.co.uk
Fixed by commit(s)
Attachments clang_stacktrace (40163 bytes, text/plain)
Blocks
Blocked by
See also
Created attachment 22430
The Clang stack trace

The following C++17 code causes the compiler to crash, when compiling with -
std=c++17 -O0 -emit-llvm:

#include <functional>
#include <type_traits>

template <typename F>
constexpr auto curry(F&& f) {
  if constexpr (std::is_invocable_v<F>) {
    return f();
  } else {
    return [f = static_cast<F&&>(f)](auto&& arg) mutable {
      return curry([
        f = static_cast<F&&>(f),
        arg_t = std::forward_as_tuple(static_cast<decltype(arg)&&>(arg))
      ](auto&&... args) mutable->decltype(f(static_cast<decltype(arg)&&>(arg),
                                            static_cast<decltype(args)&&>(
                                                args)...)) {
        return std::apply(
            f, std::tuple_cat(std::move(arg_t),
                              std::forward_as_tuple(
                                  static_cast<decltype(args)&&>(args)...)));
      });
    };
  }
}

int main(){
    int n;
    auto f = [](int n, int m, int x) { return n + m + x; };

    auto c1 = curry(f)(n);
    return 0;
}

https://godbolt.org/z/_iWHWd is a link demonstrating it. It crashes on x86-64
Clang 8.0 and trunk, but seems not to crash on the Experimental Concepts Clang
build.
Quuxplusone commented 5 years ago

Attached clang_stacktrace (40163 bytes, text/plain): The Clang stack trace

Quuxplusone commented 3 years ago
Can confirm this still crashes on trunk. The full stack trace is:

clang++: /root/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:3611:
llvm::PointerUnion<clang::Decl*, llvm::SmallVector<clang::VarDecl*, 4>*>*
clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl*):
Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"'
failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash
backtrace, preprocessed source, and associated run script.
Stack dump:
0.  Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++
-g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-
toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-
diagnostics -isystem/opt/compiler-explorer/libs/GSL/trunk/include -std=c++17
<source>
1.  <source>:29:25: current parser token ')'
2.  <source>:25:11: parsing function body 'main'
3.  <source>:25:11: in compound statement ('{}')
4.  <source>:9:12: instantiating function definition 'curry((lambda at
<source>:27:14) &)::(anonymous class)::operator()<int &>'
5.  <source>:5:16: instantiating function definition 'curry<(lambda at
<source>:10:20)>'
6.  /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-
gnu/12.0.0/../../../../include/c++/12.0.0/type_traits:3286:25: instantiating
variable definition 'std::is_invocable_v<(lambda at <source>:10:20)>'
7.  /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-
gnu/12.0.0/../../../../include/c++/12.0.0/type_traits:3038:12: instantiating
class definition 'std::is_invocable<(lambda at <source>:10:20)>'
8.  /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-
gnu/12.0.0/../../../../include/c++/12.0.0/type_traits:2581:12: instantiating
class definition 'std::__invoke_result<(lambda at <source>:10:20)>'
9.  /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-
gnu/12.0.0/../../../../include/c++/12.0.0/type_traits:2543:12: instantiating
class definition 'std::__result_of_impl<false, false, (lambda at
<source>:10:20)>'
  #0 0x000055ae8b6987df PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
  #1 0x000055ae8b6965d0 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x38965d0)
  #2 0x000055ae8b5da698 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
  #3 0x00007fd91227e3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
  #4 0x00007fd911d4d18b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618b)
  #5 0x00007fd911d2c859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x25859)
  #6 0x00007fd911d2c729 (/lib/x86_64-linux-gnu/libc.so.6+0x25729)
  #7 0x00007fd911d3df36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
  #8 0x000055ae8dd76a03 clang::LocalInstantiationScope::findInstantiationOf(clang::Decl const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f76a03)
  #9 0x000055ae8ddeda26 clang::Sema::FindInstantiatedDecl(clang::SourceLocation, clang::NamedDecl*, clang::MultiLevelTemplateArgumentList const&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5feda26)
 #10 0x000055ae8dd71ad9 (anonymous namespace)::TemplateInstantiator::TransformDecl(clang::SourceLocation, clang::Decl*) SemaTemplateInstantiate.cpp:0:0
 #11 0x000055ae8dd9c493 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclRefExpr(clang::DeclRefExpr*) SemaTemplateInstantiate.cpp:0:0
 #12 0x000055ae8dd9c973 (anonymous namespace)::TemplateInstantiator::TransformDeclRefExpr(clang::DeclRefExpr*) SemaTemplateInstantiate.cpp:0:0
 #13 0x000055ae8dd7ea76 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
 #14 0x000055ae8dd86822 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
 #15 0x000055ae8dd7e997 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
 #16 0x000055ae8dd894b4 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) SemaTemplateInstantiate.cpp:0:0
 #17 0x000055ae8dd8a88b clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #18 0x000055ae8dda367c clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fa367c)
 #19 0x000055ae8ddbc182 clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl<clang::ParmVarDecl*>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fbc182)
 #20 0x000055ae8de0045e clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*, clang::TemplateParameterList*, llvm::Optional<clang::ASTTemplateArgumentListInfo const*>, clang::TemplateDeclInstantiator::RewriteKind) (.constprop.5964) SemaTemplateInstantiateDecl.cpp:0:0
 #21 0x000055ae8ddfbaa4 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::'lambda'()>(long) SemaTemplateInstantiateDecl.cpp:0:0
 #22 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #23 0x000055ae8ddb6343 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb6343)
 #24 0x000055ae8dd4e876 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 ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f4e876)
 #25 0x000055ae8dd4fbae void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::'lambda1'()>(long) SemaTemplateDeduction.cpp:0:0
 #26 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #27 0x000055ae8dd5e6a3 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f5e6a3)
 #28 0x000055ae8dc07645 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) (.constprop.1492) SemaOverload.cpp:0:0
 #29 0x000055ae8dc07a0b clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, clang::OverloadCandidateParamOrder) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e07a0b)
 #30 0x000055ae8dc08166 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e08166)
 #31 0x000055ae8d95e89f clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5b5e89f)
 #32 0x000055ae8d963713 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5b63713)
 #33 0x000055ae8dd86922 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
 #34 0x000055ae8dd7e997 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
 #35 0x000055ae8dd894b4 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) SemaTemplateInstantiate.cpp:0:0
 #36 0x000055ae8dd8a88b clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #37 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
 #38 0x000055ae8dd935e8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&, bool) SemaTemplateInstantiate.cpp:0:0
 #39 0x000055ae8dd94ef2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName) SemaTemplateInstantiate.cpp:0:0
 #40 0x000055ae8dd8b154 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #41 0x000055ae8dda3412 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fa3412)
 #42 0x000055ae8ddbc182 clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl<clang::ParmVarDecl*>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fbc182)
 #43 0x000055ae8de0045e clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*, clang::TemplateParameterList*, llvm::Optional<clang::ASTTemplateArgumentListInfo const*>, clang::TemplateDeclInstantiator::RewriteKind) (.constprop.5964) SemaTemplateInstantiateDecl.cpp:0:0
 #44 0x000055ae8ddfbaa4 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::'lambda'()>(long) SemaTemplateInstantiateDecl.cpp:0:0
 #45 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #46 0x000055ae8ddb6343 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb6343)
 #47 0x000055ae8dd4e876 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 ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f4e876)
 #48 0x000055ae8dd4fbae void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::'lambda1'()>(long) SemaTemplateDeduction.cpp:0:0
 #49 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #50 0x000055ae8dd5e6a3 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f5e6a3)
 #51 0x000055ae8dbfd94b clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder) (.constprop.1521) SemaOverload.cpp:0:0
 #52 0x000055ae8dc13721 AddOverloadedCallCandidate(clang::Sema&, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool) SemaOverload.cpp:0:0
 #53 0x000055ae8dc13a40 clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e13a40)
 #54 0x000055ae8dc13ddc clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e13ddc)
 #55 0x000055ae8dc15899 clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e15899)
 #56 0x000055ae8d95e8ed clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5b5e8ed)
 #57 0x000055ae8d963713 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5b63713)
 #58 0x000055ae8dd86922 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
 #59 0x000055ae8dd7e997 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
 #60 0x000055ae8dd894b4 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDecltypeType(clang::TypeLocBuilder&, clang::DecltypeTypeLoc) SemaTemplateInstantiate.cpp:0:0
 #61 0x000055ae8dd8a88b clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #62 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
 #63 0x000055ae8dd96fce clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f96fce)
 #64 0x000055ae8ddf9ae2 clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(clang::TypedefNameDecl*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5ff9ae2)
 #65 0x000055ae8ddfa1af clang::TemplateDeclInstantiator::VisitTypedefDecl(clang::TypedefDecl*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5ffa1af)
 #66 0x000055ae8dd98ab2 clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f98ab2)
 #67 0x000055ae8ddb0de2 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb0de2)
 #68 0x000055ae8de25f8f void llvm::function_ref<void ()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*)::'lambda'()>(long) SemaType.cpp:0:0
 #69 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #70 0x000055ae8de30a73 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030a73)
 #71 0x000055ae8de30e45 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030e45)
 #72 0x000055ae8d6b971e clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x58b971e)
 #73 0x000055ae8dc840d5 clang::Sema::CheckTypenameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const&, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e840d5)
 #74 0x000055ae8dd781e8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool) SemaTemplateInstantiate.cpp:0:0
 #75 0x000055ae8dd969ba clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDependentNameType(clang::TypeLocBuilder&, clang::DependentNameTypeLoc, bool) SemaTemplateInstantiate.cpp:0:0
 #76 0x000055ae8dd8aafe clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #77 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
 #78 0x000055ae8dd97c59 clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, bool) (.constprop.4091) SemaTemplateInstantiate.cpp:0:0
 #79 0x000055ae8dd980c5 clang::Sema::SubstBaseSpecifiers(clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f980c5)
 #80 0x000055ae8dd9892d clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f9892d)
 #81 0x000055ae8ddb0de2 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb0de2)
 #82 0x000055ae8de25f8f void llvm::function_ref<void ()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*)::'lambda'()>(long) SemaType.cpp:0:0
 #83 0x000055ae8d689b1f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5889b1f)
 #84 0x000055ae8de30a73 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030a73)
 #85 0x000055ae8de30e45 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030e45)
 #86 0x000055ae8d6b971e clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x58b971e)
 #87 0x000055ae8dc840d5 clang::Sema::CheckTypenameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const&, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e840d5)
 #88 0x000055ae8dd781e8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildDependentNameType(clang::ElaboratedTypeKeyword, clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo const*, clang::SourceLocation, bool) SemaTemplateInstantiate.cpp:0:0
 #89 0x000055ae8dd969ba clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDependentNameType(clang::TypeLocBuilder&, clang::DependentNameTypeLoc, bool) SemaTemplateInstantiate.cpp:0:0
 #90 0x000055ae8dd8aafe clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #91 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
 #92 0x000055ae8dd935e8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&, bool) SemaTemplateInstantiate.cpp:0:0
 #93 0x000055ae8dd94ef2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName) SemaTemplateInstantiate.cpp:0:0
 #94 0x000055ae8dd8b154 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
 #95 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
 #96 0x000055ae8dd935e8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&, bool) SemaTemplateInstantiate.cpp:0:0
 #97 0x000055ae8dd96342 bool clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArguments<clang::TemplateArgumentLoc const*>(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*, clang::TemplateArgumentListInfo&, bool) (.constprop.4090) SemaTemplateInstantiate.cpp:0:0
 #98 0x000055ae8dd96624 clang::Sema::SubstTemplateArguments(llvm::ArrayRef<clang::TemplateArgumentLoc>, clang::MultiLevelTemplateArgumentList const&, clang::TemplateArgumentListInfo&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f96624)
 #99 0x000055ae8dd42abf _Z31FinishTemplateArgumentDeductionIN5clang38ClassTemplatePartialSpecializationDeclEENSt9enable_ifIXsr23IsPartialSpecializationIT_E5valueENS0_4Sema23TemplateDeductionResultEE4typeERS6_PS4_bRKNS0_20TemplateArgumentListERN4llvm15SmallVectorImplINS0_23DeducedTemplateArgumentEEERNS0_4sema21TemplateDeductionInfoE SemaTemplateDeduction.cpp:0:0
#100 0x000055ae8dd42fd5 void llvm::function_ref<void
()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*,
clang::TemplateArgumentList const&,
clang::sema::TemplateDeductionInfo&)::'lambda'()>(long)
SemaTemplateDeduction.cpp:0:0
#101 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#102 0x000055ae8dd479e8
clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*,
clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f479e8)
#103 0x000055ae8dd7b92b getPatternForClassTemplateSpecialization(clang::Sema&,
clang::SourceLocation, clang::ClassTemplateSpecializationDecl*,
clang::TemplateSpecializationKind) (.isra.4069) SemaTemplateInstantiate.cpp:0:0
#104 0x000055ae8ddb0d8b
clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation,
clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind,
bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb0d8b)
#105 0x000055ae8de25f8f void llvm::function_ref<void
()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation,
clang::QualType, clang::Sema::CompleteTypeKind,
clang::Sema::TypeDiagnoser*)::'lambda'()>(long) SemaType.cpp:0:0
#106 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#107 0x000055ae8de30a73
clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType,
clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x6030a73)
#108 0x000055ae8de30e45 clang::Sema::RequireCompleteType(clang::SourceLocation,
clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030e45)
#109 0x000055ae8d6b971e
clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&,
clang::DeclContext*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x58b971e)
#110 0x000055ae8dc840d5
clang::Sema::CheckTypenameType(clang::ElaboratedTypeKeyword,
clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo
const&, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5e840d5)
#111 0x000055ae8dd781e8 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::RebuildDependentNameType(clang::ElaboratedTypeKeyword,
clang::SourceLocation, clang::NestedNameSpecifierLoc, clang::IdentifierInfo
const*, clang::SourceLocation, bool) SemaTemplateInstantiate.cpp:0:0
#112 0x000055ae8dd969ba clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentNameType(clang::TypeLocBuilder&,
clang::DependentNameTypeLoc, bool) SemaTemplateInstantiate.cpp:0:0
#113 0x000055ae8dd8aafe clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&,
clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
#114 0x000055ae8dd8f9a2 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)
SemaTemplateInstantiate.cpp:0:0
#115 0x000055ae8dd97c59 clang::Sema::SubstType(clang::TypeSourceInfo*,
clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation,
clang::DeclarationName, bool) (.constprop.4091) SemaTemplateInstantiate.cpp:0:0
#116 0x000055ae8dd980c5 clang::Sema::SubstBaseSpecifiers(clang::CXXRecordDecl*,
clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5f980c5)
#117 0x000055ae8dd9892d clang::Sema::InstantiateClass(clang::SourceLocation,
clang::CXXRecordDecl*, clang::CXXRecordDecl*,
clang::MultiLevelTemplateArgumentList const&,
clang::TemplateSpecializationKind, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5f9892d)
#118 0x000055ae8ddb0de2
clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation,
clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind,
bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5fb0de2)
#119 0x000055ae8de25f8f void llvm::function_ref<void
()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation,
clang::QualType, clang::Sema::CompleteTypeKind,
clang::Sema::TypeDiagnoser*)::'lambda'()>(long) SemaType.cpp:0:0
#120 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#121 0x000055ae8de30a73
clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType,
clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x6030a73)
#122 0x000055ae8de30e45 clang::Sema::RequireCompleteType(clang::SourceLocation,
clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6030e45)
#123 0x000055ae8d6b971e
clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&,
clang::DeclContext*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x58b971e)
#124 0x000055ae8d93524b
clang::Sema::BuildQualifiedDeclarationNameExpr(clang::CXXScopeSpec&,
clang::DeclarationNameInfo const&, bool, clang::Scope const*,
clang::TypeSourceInfo**) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b3524b)
#125 0x000055ae8dd9c32a clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr(clang::DependentScopeDeclRefExpr*,
bool, clang::TypeSourceInfo**) SemaTemplateInstantiate.cpp:0:0
#126 0x000055ae8dd7ea8a clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
SemaTemplateInstantiate.cpp:0:0
#127 0x000055ae8dd7f48c clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformInitializer(clang::Expr*, bool)
(.part.4075) SemaTemplateInstantiate.cpp:0:0
#128 0x000055ae8dd7fbb2 clang::Sema::SubstInitializer(clang::Expr*,
clang::MultiLevelTemplateArgumentList const&, bool) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x5f7fbb2)
#129 0x000055ae8ddb6a37
clang::Sema::InstantiateVariableInitializer(clang::VarDecl*, clang::VarDecl*,
clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5fb6a37)
#130 0x000055ae8ddb6dd7
clang::Sema::CompleteVarTemplateSpecializationDecl(clang::VarTemplateSpecializationDecl*,
clang::VarDecl*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x5fb6dd7)
#131 0x000055ae8ddf220e
clang::Sema::InstantiateVariableDefinition(clang::SourceLocation,
clang::VarDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5ff220e)
#132 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#133 0x000055ae8d9328b1 DoMarkVarDeclReferenced(clang::Sema&,
clang::SourceLocation, clang::VarDecl*, clang::Expr*,
llvm::DenseMap<clang::VarDecl const*, int, llvm::DenseMapInfo<clang::VarDecl
const*>, llvm::detail::DenseMapPair<clang::VarDecl const*, int> >&)
SemaExpr.cpp:0:0
#134 0x000055ae8d932dbe clang::Sema::MarkDeclRefReferenced(clang::DeclRefExpr*,
clang::Expr const*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b32dbe)
#135 0x000055ae8d934122 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*,
clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&,
clang::NestedNameSpecifierLoc, clang::NamedDecl*, clang::SourceLocation,
clang::TemplateArgumentListInfo const*) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5b34122)
#136 0x000055ae8d934848 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*,
clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&,
clang::CXXScopeSpec const*, clang::NamedDecl*, clang::SourceLocation,
clang::TemplateArgumentListInfo const*) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5b34848)
#137 0x000055ae8d934b80
clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&,
clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*,
clang::TemplateArgumentListInfo const*, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5b34b80)
#138 0x000055ae8dc91b2b clang::Sema::CheckVarTemplateId(clang::CXXScopeSpec
const&, clang::DeclarationNameInfo const&, clang::VarTemplateDecl*,
clang::SourceLocation, clang::TemplateArgumentListInfo const*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x5e91b2b)
#139 0x000055ae8dc91c80 clang::Sema::BuildTemplateIdExpr(clang::CXXScopeSpec
const&, clang::SourceLocation, clang::LookupResult&, bool,
clang::TemplateArgumentListInfo const*) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5e91c80)
#140 0x000055ae8dd9a855 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformUnresolvedLookupExpr(clang::UnresolvedLookupExpr*)
SemaTemplateInstantiate.cpp:0:0
#141 0x000055ae8dd7ecfd clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
SemaTemplateInstantiate.cpp:0:0
#142 0x000055ae8dd820f0 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCondition(clang::SourceLocation,
clang::VarDecl*, clang::Expr*, clang::Sema::ConditionKind)
SemaTemplateInstantiate.cpp:0:0
#143 0x000055ae8ddafc38 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformIfStmt(clang::IfStmt*)
SemaTemplateInstantiate.cpp:0:0
#144 0x000055ae8ddae4cb clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*,
bool) SemaTemplateInstantiate.cpp:0:0
#145 0x000055ae8ddb0b23 clang::Sema::SubstStmt(clang::Stmt*,
clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5fb0b23)
#146 0x000055ae8ddf3c6a
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation,
clang::FunctionDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5ff3c6a)
#147 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#148 0x000055ae8dd1476c clang::Sema::DeduceReturnType(clang::FunctionDecl*,
clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5f1476c)
#149 0x000055ae8d91c96d clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*,
llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool,
bool, clang::ObjCInterfaceDecl*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b1c96d)
#150 0x000055ae8dc14e84 FinishOverloadedCallExpr(clang::Sema&, clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*,
clang::OverloadCandidateSet*, clang::OverloadCandidate**,
clang::OverloadingResult, bool) SemaOverload.cpp:0:0
#151 0x000055ae8dc15907 clang::Sema::BuildOverloadedCallExpr(clang::Scope*,
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation,
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool,
bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5e15907)
#152 0x000055ae8d95e8ed clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5b5e8ed)
#153 0x000055ae8d963713 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b63713)
#154 0x000055ae8dd86922 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*)
SemaTemplateInstantiate.cpp:0:0
#155 0x000055ae8dd7e997 clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)
SemaTemplateInstantiate.cpp:0:0
#156 0x000055ae8dd7f48c clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformInitializer(clang::Expr*, bool)
(.part.4075) SemaTemplateInstantiate.cpp:0:0
#157 0x000055ae8dd7f7cc clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformReturnStmt(clang::ReturnStmt*)
SemaTemplateInstantiate.cpp:0:0
#158 0x000055ae8ddae4cb clang::TreeTransform<(anonymous
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*,
bool) SemaTemplateInstantiate.cpp:0:0
#159 0x000055ae8ddb0b23 clang::Sema::SubstStmt(clang::Stmt*,
clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5fb0b23)
#160 0x000055ae8ddf3c6a
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation,
clang::FunctionDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5ff3c6a)
#161 0x000055ae8d689b1f
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation,
llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5889b1f)
#162 0x000055ae8dd1476c clang::Sema::DeduceReturnType(clang::FunctionDecl*,
clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5f1476c)
#163 0x000055ae8d91c96d clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*,
llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool,
bool, clang::ObjCInterfaceDecl*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b1c96d)
#164 0x000055ae8dbe080f CreateFunctionRefExpr(clang::Sema&,
clang::FunctionDecl*, clang::NamedDecl*, clang::Expr const*, bool,
clang::SourceLocation, clang::DeclarationNameLoc const&) SemaOverload.cpp:0:0
#165 0x000055ae8dc0856f
clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5e0856f)
#166 0x000055ae8d95e89f clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x5b5e89f)
#167 0x000055ae8d963713 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>,
clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x5b63713)
#168 0x000055ae8d5d8538
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*,
true>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x57d8538)
#169 0x000055ae8d5d2fee
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&,
clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x57d2fee)
#170 0x000055ae8d5d59c6
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool,
clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x57d59c6)
#171 0x000055ae8d5d5a58
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x57d5a58)
#172 0x000055ae8d5a563c
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x57a563c)
#173 0x000055ae8d5b51f7 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x57b51f7)
#174 0x000055ae8d5b5b25
clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext,
clang::SourceLocation&, clang::ParsedAttributesWithRange&, bool,
clang::Parser::ForRangeInit*, clang::SourceLocation*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x57b5b25)
#175 0x000055ae8d5b5f1c
clang::Parser::ParseDeclaration(clang::DeclaratorContext,
clang::SourceLocation&, clang::ParsedAttributesWithRange&,
clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x57b5f1c)
#176 0x000055ae8d62d34b
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*,
clang::ParsedAttributesWithRange&) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x582d34b)
#177 0x000055ae8d62df3c
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x582df3c)
#178 0x000055ae8d62eadb clang::Parser::ParseCompoundStatementBody(bool)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x582eadb)
#179 0x000055ae8d62ef0b clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x582ef0b)
#180 0x000055ae8d593404
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5793404)
#181 0x000055ae8d5b5512 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x57b5512)
#182 0x000055ae8d58f5e9
clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-
assertions-trunk/bin/clang+++0x578f5e9)
#183 0x000055ae8d58fd31
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.280) Parser.cpp:0:0
#184 0x000055ae8d58ff20
clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x578ff20)
#185 0x000055ae8d590b79
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5790b79)
#186 0x000055ae8d586ce9 clang::ParseAST(clang::Sema&, bool, bool)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5786ce9)
#187 0x000055ae8c6d0698 clang::CodeGenAction::ExecuteAction() (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x48d0698)
#188 0x000055ae8bfff721 clang::FrontendAction::Execute() (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x41ff721)
#189 0x000055ae8bf9bbca
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x419bbca)
#190 0x000055ae8c0cf393
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-
explorer/clang-assertions-trunk/bin/clang+++0x42cf393)
#191 0x000055ae890f7fec cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x12f7fec)
#192 0x000055ae890f33e9 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
driver.cpp:0:0
#193 0x000055ae8be4beb5 void llvm::function_ref<void
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#194 0x000055ae8b5dac83
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x37dac83)
#195 0x000055ae8be4e234
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x404e234)
#196 0x000055ae8be23dea
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&,
clang::driver::Command const*&) const (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x4023dea)
#197 0x000055ae8be24a7f
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4024a7f)
#198 0x000055ae8be2d84a
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&)
(/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x402d84a)
#199 0x000055ae8901d3d2 main (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x121d3d2)
#200 0x00007fd911d2e0b3 __libc_start_main (/lib/x86_64-linux-
gnu/libc.so.6+0x270b3)
#201 0x000055ae890f2f5a _start (/opt/compiler-explorer/clang-assertions-
trunk/bin/clang+++0x12f2f5a)
clang-14: error: clang frontend command failed with exit code 134 (use -v to
see invocation)
Compiler returned: 134

It looks like another case of not setting up the template instantiation scope
properly.