llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.92k stars 11.53k forks source link

Segfault in clang, using auto keyword on templated assignment operator. #33481

Open llvmbot opened 7 years ago

llvmbot commented 7 years ago
Bugzilla Link 34134
Version 4.0
OS Linux
Attachments Pre-processed source, Run script
Reporter LLVM Bugzilla Contributor
CC @DougGregor,@DimitryAndric

Extended Description

The code below causes a segfault on clang++-4.0 on Ubuntu.

class A {
  template<class T>
  A(const T& a) { }

  A& operator=(const A& a) { return *this; }

  template<class T>
  auto operator=(const T& a) -> decltype(*this = A(a)) { return *this = A(a); } 
}

int main() {
}

Crash trace

​0 0x00007fecb96339a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x70e9a8)

​1 0x00007fecb9631b2e llvm::sys::RunSignalHandlers() (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x70cb2e)

​2 0x00007fecb9631c7c (/usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1+0x70cc7c)

​3 0x00007fecbbe7d390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)

​4 0x0000000000f279e3 (/usr/lib/llvm-4.0/bin/clang+0xf279e3)

​5 0x0000000000f2b800 (/usr/lib/llvm-4.0/bin/clang+0xf2b800)

​6 0x0000000000f2cdb2 (/usr/lib/llvm-4.0/bin/clang+0xf2cdb2)

​7 0x0000000000f2d126 clang::Sema::BuildCXXFunctionalCastExpr(clang::TypeSourceInfo, clang::SourceLocation, clang::Expr, clang::SourceLocation) (/usr/lib/llvm-4.0/bin/clang+0xf2d126)

​8 0x00000000010f86d4 clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr>, clang::SourceLocation) (/usr/lib/llvm-4.0/bin/clang+0x10f86d4)

​9 0x00000000012e6304 (/usr/lib/llvm-4.0/bin/clang+0x12e6304)

​10 0x00000000012e3ad8 (/usr/lib/llvm-4.0/bin/clang+0x12e3ad8)

​11 0x00000000012f3b37 (/usr/lib/llvm-4.0/bin/clang+0x12f3b37)

​12 0x00000000012e3a4c (/usr/lib/llvm-4.0/bin/clang+0x12e3a4c)

​13 0x00000000012f52a9 (/usr/lib/llvm-4.0/bin/clang+0x12f52a9)

​14 0x00000000012e38d9 (/usr/lib/llvm-4.0/bin/clang+0x12e38d9)

​15 0x00000000012f3443 (/usr/lib/llvm-4.0/bin/clang+0x12f3443)

​16 0x00000000012e3aa6 (/usr/lib/llvm-4.0/bin/clang+0x12e3aa6)

​17 0x00000000012dbd91 (/usr/lib/llvm-4.0/bin/clang+0x12dbd91)

​18 0x00000000012e1324 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-4.0/bin/clang+0x12e1324)

​19 0x0000000001300998 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-4.0/bin/clang+0x1300998)

Stack dump:

  1. Program arguments: /usr/lib/llvm-4.0/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib/llvm-4.0/bin/../lib/clang/4.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/backward -internal-isystem /usr/include/clang/4.0.0/include/ -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-4.0/bin/../lib/clang/4.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include --std=c++11 -fdeprecated-macro -fdebug-compilation-dir /home/mjki2mb2/CoreChemical/simcem_core/stator/build -ferror-limit 19 -fmessage-length 133 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/test-5181f9.o -x c++ test.cpp
  2. test.cpp:8:77: current parser token ';'
  3. test.cpp:1:1: parsing struct/union/class body 'A'
  4. test.cpp:8:56: parsing function body 'A::operator='
  5. test.cpp:8:56: in compound statement ('{}') clang: error: unable to execute command: Segmentation fault (core dumped) clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 4.0.0-0ubuntu0~xedgers16.04.1 (tags/RELEASE_400/rc1) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin
llvmbot commented 6 years ago

I can reproduce with svn head

llvmbot commented 7 years ago

To prove its not my system, I set up a github repository with the test case: https://github.com/toastedcrumpets/clang-bug-34134

I then use Travis CI to build the test case on a range of fresh clang installs: https://travis-ci.org/toastedcrumpets/clang-bug-34134/builds/263262653

clang 3.6, 3.7, 3.8, 3.9, all fail with the correct template recursion error. clang 4.0 displays the segfault. clang 5.0 fails to install so no result there (issue with travis)

llvmbot commented 7 years ago

Yeah the code has "issues" and is not valid C++, but the segfault is still invalid behaviour.

I've tested on Ubuntu 16.04 and 17.04, using packages of clang++-4.0 from http://apt.llvm.org/ and both installs segfault. I have a segfault with clang++-5.0 as well (see below).

There's nothing "unusual" about my system configuration and I constantly compile plenty of code using clang without issues so its not systemic.

​0 0x00007f644f35d0ea llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/lib/llvm-5.0/bin/../lib/libLLVM-5.0.so.1+0x7c80ea)

​1 0x00007f644f35b21e llvm::sys::RunSignalHandlers() (/usr/lib/llvm-5.0/bin/../lib/libLLVM-5.0.so.1+0x7c621e)

​2 0x00007f644f35b35a (/usr/lib/llvm-5.0/bin/../lib/libLLVM-5.0.so.1+0x7c635a)

​3 0x00007f6452196670 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11670)

​4 0x0000563c89411524 clang::InitializationSequence::InitializeFrom(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x1040524)

​5 0x0000563c8941c35b clang::Sema::PerformCopyInitialization(clang::InitializedEntity const&, clang::SourceLocation, clang::ActionResult<clang::Expr*, true>, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x104b35b)

​6 0x0000563c893760c9 clang::Sema::GatherArgumentsForCall(clang::SourceLocation, clang::FunctionDecl, clang::FunctionProtoType const, unsigned int, llvm::ArrayRef<clang::Expr>, llvm::SmallVectorImpl<clang::Expr>&, clang::Sema::VariadicCallType, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0xfa50c9)

​7 0x0000563c892c0a6c clang::Sema::CompleteConstructorCall(clang::CXXConstructorDecl, llvm::MutableArrayRef<clang::Expr>, clang::SourceLocation, llvm::SmallVectorImpl<clang::Expr*>&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0xeefa6c)

​8 0x0000563c8940c899 (/usr/lib/llvm-5.0/bin/clang+0x103b899)

​9 0x0000563c89419770 clang::InitializationSequence::Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr>, clang::QualType) (/usr/lib/llvm-5.0/bin/clang+0x1048770)

​10 0x0000563c8919b3d3 (/usr/lib/llvm-5.0/bin/clang+0xdca3d3)

​11 0x0000563c8919fd40 (/usr/lib/llvm-5.0/bin/clang+0xdced40)

​12 0x0000563c891a0d92 (/usr/lib/llvm-5.0/bin/clang+0xdcfd92)

​13 0x0000563c891a34cd clang::Sema::BuildCXXFunctionalCastExpr(clang::TypeSourceInfo, clang::QualType, clang::SourceLocation, clang::Expr, clang::SourceLocation) (/usr/lib/llvm-5.0/bin/clang+0xdd24cd)

​14 0x0000563c893a361b clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr>, clang::SourceLocation) (/usr/lib/llvm-5.0/bin/clang+0xfd261b)

​15 0x0000563c895c0864 (/usr/lib/llvm-5.0/bin/clang+0x11ef864)

​16 0x0000563c895aa7c0 (/usr/lib/llvm-5.0/bin/clang+0x11d97c0)

​17 0x0000563c895afc17 (/usr/lib/llvm-5.0/bin/clang+0x11dec17)

​18 0x0000563c895aa734 (/usr/lib/llvm-5.0/bin/clang+0x11d9734)

​19 0x0000563c895b0669 (/usr/lib/llvm-5.0/bin/clang+0x11df669)

​20 0x0000563c895aa5b9 (/usr/lib/llvm-5.0/bin/clang+0x11d95b9)

​21 0x0000563c895c155c (/usr/lib/llvm-5.0/bin/clang+0x11f055c)

​22 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​23 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​24 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​25 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​26 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​27 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​28 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​29 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​30 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​31 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​32 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​33 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​34 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​35 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​36 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​37 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​38 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​39 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​40 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​41 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​42 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​43 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​44 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​45 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​46 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​47 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​48 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​49 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​50 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​51 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​52 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​53 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​54 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​55 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​56 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​57 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​58 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​59 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​60 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​61 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​62 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​63 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​64 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​65 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​66 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​67 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​68 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​69 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​70 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​71 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​72 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​73 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​74 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​75 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​76 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​77 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​78 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​79 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​80 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​81 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​82 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​83 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​84 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​85 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​86 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​87 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​88 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​89 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​90 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​91 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​92 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​93 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​94 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​95 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​96 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​97 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​98 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​99 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​100 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​101 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​102 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​103 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​104 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​105 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​106 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​107 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​108 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​109 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​110 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​111 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​112 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​113 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​114 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​115 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​116 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​117 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​118 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​119 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​120 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​121 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​122 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​123 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​124 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​125 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​126 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​127 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​128 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​129 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​130 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​131 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​132 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​133 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​134 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​135 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​136 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​137 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​138 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​139 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​140 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​141 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​142 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​143 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​144 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​145 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​146 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​147 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​148 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​149 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​150 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​151 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​152 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​153 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​154 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​155 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​156 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​157 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​158 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​159 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​160 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​161 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​162 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​163 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​164 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​165 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​166 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​167 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​168 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​169 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​170 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​171 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​172 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​173 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​174 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​175 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​176 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​177 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​178 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​179 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​180 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​181 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​182 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​183 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​184 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​185 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​186 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​187 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​188 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​189 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​190 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​191 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​192 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​193 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​194 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​195 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​196 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​197 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​198 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​199 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​200 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​201 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​202 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​203 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​204 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​205 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​206 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​207 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​208 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​209 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​210 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​211 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​212 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​213 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​214 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​215 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​216 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​217 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​218 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​219 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​220 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​221 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​222 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​223 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​224 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​225 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​226 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​227 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​228 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​229 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​230 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​231 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​232 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​233 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​234 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​235 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​236 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​237 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​238 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​239 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​240 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​241 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​242 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

​243 0x0000563c895aa78e (/usr/lib/llvm-5.0/bin/clang+0x11d978e)

​244 0x0000563c895b1bf8 (/usr/lib/llvm-5.0/bin/clang+0x11e0bf8)

​245 0x0000563c895cae31 clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl, unsigned int) (/usr/lib/llvm-5.0/bin/clang+0x11f9e31)

​246 0x0000563c895cfc69 clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*) (/usr/lib/llvm-5.0/bin/clang+0x11fec69)

​247 0x0000563c895e150d clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl, clang::TemplateParameterList, bool) (/usr/lib/llvm-5.0/bin/clang+0x121050d)

​248 0x0000563c895dd542 clang::Sema::SubstDecl(clang::Decl, clang::DeclContext, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-5.0/bin/clang+0x120c542)

​249 0x0000563c89596c95 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl const*, bool, llvm::function_ref<bool ()>) (/usr/lib/llvm-5.0/bin/clang+0x11c5c95)

​250 0x0000563c8959b448 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl, clang::TemplateArgumentListInfo, llvm::ArrayRef<clang::Expr>, clang::FunctionDecl&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef)>) (/usr/lib/llvm-5.0/bin/clang+0x11ca448)

​251 0x0000563c894ce38b clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl, clang::DeclAccessPair, clang::CXXRecordDecl, clang::TemplateArgumentListInfo, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr>, clang::OverloadCandidateSet&, bool, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd38b)

​252 0x0000563c894ce9d4 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib/llvm-5.0/bin/clang+0x10fd9d4)

​253 0x0000563c894cec25 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::SourceRange) (/usr/lib/llvm-5.0/bin/clang+0x10fdc25)

​254 0x0000563c894dc583 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr, clang::Expr) (/usr/lib/llvm-5.0/bin/clang+0x110b583)

​255 0x0000563c895c1708 (/usr/lib/llvm-5.0/bin/clang+0x11f0708)

Stack dump:

  1. Program arguments: /usr/lib/llvm-5.0/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib/llvm-5.0/lib/clang/5.0.0 -internal-isystem /usr/include/clang/5.0.0/include/ -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-5.0/lib/clang/5.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include --std=c++11 -fdeprecated-macro -fdebug-compilation-dir /home/mjki2mb2/CoreChemical/simcem_core -ferror-limit 19 -fmessage-length 133 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/test-096858.o -x c++ test.cpp
  2. test.cpp:8:77: current parser token ';'
  3. test.cpp:1:1: parsing struct/union/class body 'A'
  4. test.cpp:8:56: parsing function body 'A::operator='
  5. test.cpp:8:56: in compound statement ('{}') clang: error: unable to execute command: Segmentation fault (core dumped) clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 5.0.0-svn310538-1~exp1 (branches/release_50) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin clang: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script. clang: note: diagnostic msg:
DimitryAndric commented 7 years ago

For me, it doesn't segfault, but simply complains about the recursive template exceeding the maximum instantiation depth:

$ clang-4.0.0 -std=c++11 -c test-63a412.cpp test.cpp:8:50: fatal error: recursive template instantiation exceeded maximum depth of 1024 auto operator=(const T& a) -> decltype(this = A(a)) { return this = A(a); } ^ test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] auto operator=(const T& a) -> decltype(this = A(a)) { return this = A(a); } ^ test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: (skipping 1015 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:48: note: while substituting deduced template arguments into function template 'operator=' [with T = A] test.cpp:8:71: note: while substituting deduced template arguments into function template 'operator=' [with T = A] auto operator=(const T& a) -> decltype(this = A(a)) { return this = A(a); } ^ 1 error generated.

shafik commented 1 year ago

This does not crash but results in stack exhaustion when substituting deduced template arguments, godbolt: https://godbolt.org/z/vaW83868W

llvmbot commented 1 year ago

@llvm/issue-subscribers-clang-frontend