This is an archive of the discontinued LLVM Phabricator instance.

[ASTImporter] Import the default argument of TemplateTypeParmDecl
ClosedPublic

Authored by teemperor on Nov 25 2020, 7:46 AM.

Details

Summary

The test case isn't using the AST matchers for all checks as there doesn't seem to be support for
matching TemplateTypeParmDecl default arguments. Otherwise this is simply importing the
default arguments.

Diff Detail

Event Timeline

teemperor created this revision.Nov 25 2020, 7:46 AM
teemperor requested review of this revision.Nov 25 2020, 7:46 AM
teemperor retitled this revision from [ASTImporter] Import the default arguments of TemplateTypeParmDecl to [ASTImporter] Import the default argument of TemplateTypeParmDecl.Nov 25 2020, 8:07 AM
martong accepted this revision.Nov 25 2020, 9:40 AM

LG! Thanks!

clang/lib/AST/ASTImporter.cpp
5160–5161

I wonder whether this FIXME is already fixed, at line 5182?

This revision is now accepted and ready to land.Nov 25 2020, 9:40 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptNov 26 2020, 9:02 AM
teemperor added inline comments.Nov 26 2020, 9:03 AM
clang/lib/AST/ASTImporter.cpp
5160–5161

I think so. I removed the whole comment instead. Thanks!

On bitcoin v0.18.1, there is an assertion introduced by this change.
The TU that can be used for reproduction is src/script/interpreter.cpp.
Assertion message:

CTU loaded AST file: /home/gamesh411/bitcoin/src/script/script.cpp                                                                                                                                         
clang: /home/gamesh411/llvm-project/clang/lib/AST/ASTContext.cpp:4411: clang::QualType clang::ASTContext::getInjectedClassNameType(clang::CXXRecordDecl*, clang::QualType) const: Assertion `NeedsInjectedC
lassNameType(Decl)' failed.

Stacktrace:

1.      <eof> parser at end of file                                                                                                                                                             [310/31632]
2.      While analyzing stack: 
        #0 Calling CountWitnessSigOps
3.      /home/gamesh411/bitcoin/src/script/interpreter.cpp:1618:9: Error evaluating statement
4.      /home/gamesh411/bitcoin/src/script/interpreter.cpp:1618:9: Error evaluating statement
  #0 0x00007f9063076451 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/gamesh411/clang-rwa/bin/../lib/libLLVMSupport.so.12git+0x1be451)
  #1 0x00007f9063073ff4 llvm::sys::RunSignalHandlers() (/home/gamesh411/clang-rwa/bin/../lib/libLLVMSupport.so.12git+0x1bbff4)
  #2 0x00007f9063074291 llvm::sys::CleanupOnSignal(unsigned long) (/home/gamesh411/clang-rwa/bin/../lib/libLLVMSupport.so.12git+0x1bc291)
  #3 0x00007f9062f7d0b8 CrashRecoverySignalHandler(int) (/home/gamesh411/clang-rwa/bin/../lib/libLLVMSupport.so.12git+0xc50b8)
  #4 0x00007f9062b05210 (/lib/x86_64-linux-gnu/libc.so.6+0x46210)
  #5 0x00007f9062b0518b raise /build/glibc-ZN95T4/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
  #6 0x00007f9062ae4859 abort /build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:81:7
  #7 0x00007f9062ae4729 get_sysdep_segment_value /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:509:8
  #8 0x00007f9062ae4729 _nl_load_domain /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:970:34
  #9 0x00007f9062af5f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
 #10 0x00007f90612e5be0 clang::ASTContext::getInjectedClassNameType(clang::CXXRecordDecl*, clang::QualType) const (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x1a4be0)
 #11 0x00007f9061393933 clang::ASTNodeImporter::VisitRecordDecl(clang::RecordDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x252933)
 #12 0x00007f9061361055 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220055)
 #13 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #14 0x00007f906139cfad clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bfad)
 #15 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
 #16 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #17 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
 #18 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
 #19 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
 #20 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
 #21 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #22 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
 #23 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
 #24 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
 #25 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
 #26 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #27 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
 #28 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
 #29 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
 #30 0x00007f906139cd2a clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bd2a)
 #31 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
 #32 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #33 0x00007f9061384cb0 clang::ASTImporter::Import(clang::TemplateName) (.localalias) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x243cb0)
 #34 0x00007f9061385475 clang::ASTNodeImporter::VisitTemplateSpecializationType(clang::TemplateSpecializationType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x244475)
 #35 0x00007f9061366e45 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225e45)
 #36 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
 #37 0x00007f9061369004 clang::ASTNodeImporter::VisitPointerType(clang::PointerType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x228004)
 #38 0x00007f9061366ea5 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225ea5)
 #39 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
 #40 0x00007f906137d729 clang::ASTNodeImporter::VisitFunctionProtoType(clang::FunctionProtoType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x23c729)
 #41 0x00007f9061366f25 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225f25)
 #42 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
#43 0x00007f90613695ff clang::QualType clang::ASTNodeImporter::importChecked<clang::QualType>(llvm::Error&, clang::QualType const&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22
85ff)
 #44 0x00007f906135f9db clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21e9db)
 #45 0x00007f9061361015 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220015)
 #46 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #47 0x00007f906139fa81 clang::ASTNodeImporter::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25ea81)
 #48 0x00007f9061361095 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220095)
 #49 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #50 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
 #51 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
 #52 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
 #53 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
 #54 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #55 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
 #56 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
 #57 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
 #58 0x00007f906135f2c9 clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21e2c9)
 #59 0x00007f9061361015 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220015)
 #60 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #61 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
 #62 0x00007f90613604e8 clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21f4e8)
 #63 0x00007f9061361015 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220015)
 #64 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #65 0x00007f906139fa81 clang::ASTNodeImporter::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25ea81)
 #66 0x00007f9061361095 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220095)
 #67 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #68 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
 #69 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
 #70 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
 #71 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
 #72 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #73 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
 #74 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
 #75 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
 #76 0x00007f906139cd2a clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bd2a)
 #77 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
 #78 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #79 0x00007f9061384cb0 clang::ASTImporter::Import(clang::TemplateName) (.localalias) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x243cb0)
 #80 0x00007f9061385475 clang::ASTNodeImporter::VisitTemplateSpecializationType(clang::TemplateSpecializationType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x244475)
 #81 0x00007f9061366e45 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225e45)
 #82 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
 #83 0x00007f9061385682 clang::ASTNodeImporter::VisitTemplateSpecializationType(clang::TemplateSpecializationType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x244682)
#84 0x00007f9061366e45 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225e45)
 #85 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
 #86 0x00007f906136d284 clang::ASTImporter::Import(clang::TypeSourceInfo*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22c284)
 #87 0x00007f906136d45c llvm::Expected<clang::TypeSourceInfo*> clang::ASTNodeImporter::import<clang::TypeSourceInfo>(clang::TypeSourceInfo*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12
git+0x22c45c)
 #88 0x00007f906139c1b6 clang::ASTNodeImporter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25b1b6)
 #89 0x00007f90613610a5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2200a5)
 #90 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #91 0x00007f9061362d7c llvm::Expected<clang::NamedDecl*> clang::ASTNodeImporter::import<clang::NamedDecl>(clang::NamedDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x221d7c)
 #92 0x00007f9061376462 llvm::Expected<clang::TemplateParameterList*> clang::ASTNodeImporter::import<clang::TemplateParameterList>(clang::TemplateParameterList*) (/home/gamesh411/clang-rwa/bin/../lib/../
lib/libclangAST.so.12git+0x235462)
 #93 0x00007f906139d013 clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25c013)
 #94 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
 #95 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #96 0x00007f90613935db clang::ASTNodeImporter::VisitRecordDecl(clang::RecordDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2525db)
 #97 0x00007f9061361055 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220055)
 #98 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
 #99 0x00007f906139cfad clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bfad)
#100 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
#101 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#102 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#103 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
#104 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
#105 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#106 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#107 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#108 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
#109 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
#110 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#111 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#112 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
#113 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
#114 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
#115 0x00007f906139cd2a clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bd2a)
#116 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
#117 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#118 0x00007f9061384cb0 clang::ASTImporter::Import(clang::TemplateName) (.localalias) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x243cb0)
#119 0x00007f9061385475 clang::ASTNodeImporter::VisitTemplateSpecializationType(clang::TemplateSpecializationType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x244475)
#120 0x00007f9061366e45 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225e45)
#121 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
#122 0x00007f906136d284 clang::ASTImporter::Import(clang::TypeSourceInfo*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22c284)
#123 0x00007f906136d45c llvm::Expected<clang::TypeSourceInfo*> clang::ASTNodeImporter::import<clang::TypeSourceInfo>(clang::TypeSourceInfo*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12
git+0x22c45c)
#124 0x00007f906139c1b6 clang::ASTNodeImporter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25b1b6)
#125 0x00007f90613610a5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2200a5)
#126 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#127 0x00007f9061362d7c llvm::Expected<clang::NamedDecl*> clang::ASTNodeImporter::import<clang::NamedDecl>(clang::NamedDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x221d7c)
#128 0x00007f9061376462 llvm::Expected<clang::TemplateParameterList*> clang::ASTNodeImporter::import<clang::TemplateParameterList>(clang::TemplateParameterList*) (/home/gamesh411/clang-rwa/bin/../lib/../
lib/libclangAST.so.12git+0x235462)
#129 0x00007f906139d013 clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25c013)
#130 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
#131 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#132 0x00007f90613935db clang::ASTNodeImporter::VisitRecordDecl(clang::RecordDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2525db)
#133 0x00007f9061361055 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220055)
#134 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#135 0x00007f906139cfad clang::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x25bfad)
#136 0x00007f9061361125 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220125)
#137 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#138 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#139 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
#140 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
#141 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#142 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#143 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#144 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
#145 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
#146 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#147 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#148 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
#149 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
#150 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
#151 0x00007f906138fdca clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24edca)
#152 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#153 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#154 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
#155 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
#156 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
#157 0x00007f9061392a00 clang::ASTNodeImporter::VisitRecordDecl(clang::RecordDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x251a00)
#158 0x00007f9061361055 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220055)
#159 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#160 0x00007f906136fe4f clang::ASTImporter::ImportContext(clang::DeclContext*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22ee4f)
#161 0x00007f90613721c4 clang::ASTNodeImporter::ImportDeclContext(clang::Decl*, clang::DeclContext*&, clang::DeclContext*&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2311c4)
#162 0x00007f90613726bc clang::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::NamedDecl*&, clang::SourceLocation&) (/home/
gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2316bc)
#163 0x00007f906135f2c9 clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21e2c9)
#164 0x00007f9061360e62 clang::ASTNodeImporter::VisitCXXMethodDecl(clang::CXXMethodDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21fe62)
#165 0x00007f9061361135 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220135)
#166 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#167 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#168 0x00007f906135f21b clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21e21b)
#169 0x00007f9061360e62 clang::ASTNodeImporter::VisitCXXMethodDecl(clang::CXXMethodDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21fe62)
#170 0x00007f9061361135 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220135)
#171 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#172 0x00007f90613631cc llvm::Expected<clang::Decl*> clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2221cc)
#173 0x00007f9061370385 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22f385)
#174 0x00007f906139013b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x24f13b)
#175 0x00007f90613612b5 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x2202b5)
#176 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#177 0x00007f90613678b6 clang::ASTImporter::Import(clang::NestedNameSpecifier*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2268b6)
#178 0x00007f9061367b6c llvm::Expected<clang::NestedNameSpecifier*> clang::ASTNodeImporter::import<clang::NestedNameSpecifier>(clang::NestedNameSpecifier*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/li
bclangAST.so.12git+0x226b6c)
#179 0x00007f906136cc4c clang::ASTNodeImporter::VisitElaboratedType(clang::ElaboratedType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22bc4c)
#180 0x00007f9061366f45 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225f45)
#181 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
#182 0x00007f90613691e4 clang::ASTNodeImporter::VisitLValueReferenceType(clang::LValueReferenceType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x2281e4)
#183 0x00007f9061366e95 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225e95)
#184 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
#185 0x00007f906137d729 clang::ASTNodeImporter::VisitFunctionProtoType(clang::FunctionProtoType const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x23c729)
#186 0x00007f9061366f25 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType> >::Visit(clang::Type const*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x225f25)
#187 0x00007f906136719f clang::ASTImporter::Import(clang::QualType) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22619f)
#188 0x00007f90613695ff clang::QualType clang::ASTNodeImporter::importChecked<clang::QualType>(llvm::Error&, clang::QualType const&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22
85ff)
#189 0x00007f906135f9db clang::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21e9db)
#190 0x00007f9061360e62 clang::ASTNodeImporter::VisitCXXMethodDecl(clang::CXXMethodDecl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x21fe62)
#191 0x00007f9061361135 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.
12git+0x220135)
#192 0x00007f906136171e clang::ASTImporter::Import(clang::Decl*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangAST.so.12git+0x22071e)
#193 0x00007f905ef5a665 llvm::Expected<clang::FunctionDecl const*> clang::cross_tu::CrossTranslationUnitContext::importDefinitionImpl<clang::FunctionDecl>(clang::FunctionDecl const*, clang::ASTUnit*) (/h
ome/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangCrossTU.so.12git+0x10665)
#194 0x00007f905ef5a982 clang::cross_tu::CrossTranslationUnitContext::importDefinition(clang::FunctionDecl const*, clang::ASTUnit*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangCrossTU.so.
12git+0x10982)
#195 0x00007f905ef5d0b9 llvm::Expected<clang::FunctionDecl const*> clang::cross_tu::CrossTranslationUnitContext::getCrossTUDefinitionImpl<clang::FunctionDecl>(clang::FunctionDecl const*, llvm::StringRef,
 llvm::StringRef, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangCrossTU.so.12git+0x130b9)
#196 0x00007f905ef5d58e clang::cross_tu::CrossTranslationUnitContext::getCrossTUDefinition(clang::FunctionDecl const*, llvm::StringRef, llvm::StringRef, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib
/../lib/libclangCrossTU.so.12git+0x1358e)
#197 0x00007f905f029117 clang::ento::AnyFunctionCall::getRuntimeDefinition() const (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0xc1117)
#198 0x00007f905f02ab35 clang::ento::CXXInstanceCall::getRuntimeDefinition() const (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0xc2b35)                        
#199 0x00007f905f0a2e56 clang::ento::ExprEngine::defaultEvalCall(clang::ento::NodeBuilder&, clang::ento::ExplodedNode*, clang::ento::CallEvent const&, clang::ento::EvalCallOptions const&) (/home/gamesh41
1/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0x13ae56)                                                                                                                         
#200 0x00007f905f039bfc clang::ento::CheckerManager::runCheckersForEvalCall(clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet const&, clang::ento::CallEvent const&, clang::ento::ExprEngine&, cl
ang::ento::EvalCallOptions const&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0xd1bfc)                                                                        
#201 0x00007f905f09fdd1 clang::ento::ExprEngine::evalCall(clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNode*, clang::ento::CallEvent const&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/lib
clangStaticAnalyzerCore.so.12git+0x137dd1)                                                                                                                                                                 
#202 0x00007f905f0a0b47 clang::ento::ExprEngine::VisitCallExpr(clang::CallExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libcl
angStaticAnalyzerCore.so.12git+0x138b47)
#203 0x00007f905f07b764 clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAna
lyzerCore.so.12git+0x113764)
#204 0x00007f905f07c761 clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*, clang::ento::ExplodedNode*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0x1147
61)
#205 0x00007f905f07c952 clang::ento::ExprEngine::processCFGElement(clang::CFGElement, clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*) (/home/gamesh411/clang-rwa/bin/../lib/../
lib/../lib/libclangStaticAnalyzerCore.so.12git+0x114952)
#206 0x00007f905f0434b5 clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/../lib/libclangStaticAnalyze
rCore.so.12git+0xdb4b5)
#207 0x00007f905f043763 clang::ento::CoreEngine::dispatchWorkItem(clang::ento::ExplodedNode*, clang::ProgramPoint, clang::ento::WorkListUnit const&) (.localalias) (/home/gamesh411/clang-rwa/bin/../lib/..
/lib/../lib/libclangStaticAnalyzerCore.so.12git+0xdb763)
#208 0x00007f905f043882 clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) (/home/gamesh411/clang-rwa/bin/../
lib/../lib/../lib/libclangStaticAnalyzerCore.so.12git+0xdb882)
#209 0x00007f9061d5f7c9 (anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang
::Decl const*> >*) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangStaticAnalyzerFrontend.so.12git+0x297c9)
#210 0x00007f9061d83485 (anonymous namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangStaticAnalyzerFrontend.so.12git+0x4d485)
#211 0x00007f9061d84ab2 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangStaticAnalyzerFrontend.so.12git+0x4eab2)
#212 0x00007f9060bbbf69 clang::ParseAST(clang::Sema&, bool, bool) (/home/gamesh411/clang-rwa/bin/../lib/../lib/libclangParse.so.12git+0x39f69)
#213 0x00007f9064d2f0d9 clang::FrontendAction::Execute() (/home/gamesh411/clang-rwa/bin/../lib/libclangFrontend.so.12git+0x11a0d9)
#214 0x00007f9064cd6a06 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/gamesh411/clang-rwa/bin/../lib/libclangFrontend.so.12git+0xc1a06)
#215 0x00007f9066adb278 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/gamesh411/clang-rwa/bin/../lib/libclangFrontendTool.so.12git+0x5278)
#216 0x00005632e28f9237 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/gamesh411/clang-rwa/bin/clang+0x15237)
#217 0x00005632e28f46a8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) (/home/gamesh411/clang-rwa/bin/clang+0x106a8)
#218 0x00007f9064a2f5e9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_trait
s<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) (/home/gamesh411/clang-rwa/bin/../lib/libclangDriver.so.12git+0xa15e9)
#219 0x00007f9062f7d23c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/gamesh411/clang-rwa/bin/../lib/libLLVMSupport.so.12git+0xc523c)
#220 0x00007f9064a30284 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const
 (.part.0) (/home/gamesh411/clang-rwa/bin/../lib/libclangDriver.so.12git+0xa2284)
#221 0x00007f90649fe68b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/gamesh411/clang-rwa/bin/../lib/libclangDriver.so.12git+0x706
8b)
#222 0x00007f90649ff197 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/gamesh411/clang-rwa/bin
/../lib/libclangDriver.so.12git+0x71197)
#223 0x00007f9064a0d059 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/gamesh411/clang-rwa/bin/../li
b/libclangDriver.so.12git+0x7f059)
#224 0x00005632e28f327d main (/home/gamesh411/clang-rwa/bin/clang+0xf27d)
#225 0x00007f9062ae60b3 __libc_start_main /build/glibc-ZN95T4/glibc-2.31/csu/../csu/libc-start.c:342:3
#226 0x00005632e28f41fe _start (/home/gamesh411/clang-rwa/bin/clang+0x101fe)
clang-12: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 12.0.0 (git@github.com:gamesh411/llvm-project.git 3f6c856bb5ae4426a586426bca9f1ef2848a2b12)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/gamesh411/clang-rwa/bin

The command I used to analyze:

/home/gamesh411/clang-rwa/bin/clang \                                           
  --analyze \                                                                   
  -Qunused-arguments \                                                          
  -Xclang -analyzer-opt-analyze-headers \                                       
  -Xclang -analyzer-output=plist-multi-file \                                   
  -o /home/gamesh411/bitcoin/reports/interpreter.cpp_clangsa_afb74d9765cff557ebd774f5c587def9.plist \
  -Xclang -analyzer-config \                                                    
  -Xclang expand-macros=true \                                                  
  -Xclang -analyzer-checker=apiModeling.StdCLibraryFunctions \                  
  -Xclang -analyzer-checker=apiModeling.TrustNonnull \                          
  -Xclang -analyzer-checker=apiModeling.google.GTest \                          
  -Xclang -analyzer-checker=apiModeling.llvm.CastValue \                        
  -Xclang -analyzer-checker=apiModeling.llvm.ReturnValue \                      
  -Xclang -analyzer-checker=core.CallAndMessage \                               
  -Xclang -analyzer-checker=core.CallAndMessageModeling \                       
  -Xclang -analyzer-checker=core.DivideZero \                                   
  -Xclang -analyzer-checker=core.DynamicTypePropagation \                       
  -Xclang -analyzer-checker=core.NonNullParamChecker \                          
  -Xclang -analyzer-checker=core.NonnilStringConstants \                        
  -Xclang -analyzer-checker=core.NullDereference \                              
  -Xclang -analyzer-checker=core.StackAddrEscapeBase \                          
  -Xclang -analyzer-checker=core.StackAddressEscape \                           
  -Xclang -analyzer-checker=core.UndefinedBinaryOperatorResult \                
  -Xclang -analyzer-checker=core.VLASize \                                      
  -Xclang -analyzer-checker=core.builtin.BuiltinFunctions \                     
  -Xclang -analyzer-checker=core.builtin.NoReturnFunctions \                    
  -Xclang -analyzer-checker=core.uninitialized.ArraySubscript \                 
  -Xclang -analyzer-checker=core.uninitialized.Assign \                         
  -Xclang -analyzer-checker=core.uninitialized.Branch \                         
  -Xclang -analyzer-checker=core.uninitialized.CapturedBlockVariable \          
  -Xclang -analyzer-checker=core.uninitialized.UndefReturn \                    
  -Xclang -analyzer-checker=cplusplus.InnerPointer \                            
  -Xclang -analyzer-checker=cplusplus.Move \                                    
  -Xclang -analyzer-checker=cplusplus.NewDelete \                               
  -Xclang -analyzer-checker=cplusplus.NewDeleteLeaks \                          
  -Xclang -analyzer-checker=cplusplus.PlacementNew \                            
  -Xclang -analyzer-checker=cplusplus.PureVirtualCall \                         
  -Xclang -analyzer-checker=cplusplus.SelfAssignment \                          
  -Xclang -analyzer-checker=cplusplus.SmartPtrModeling \                        
  -Xclang -analyzer-checker=cplusplus.VirtualCallModeling \                     
  -Xclang -analyzer-checker=deadcode.DeadStores \                               
  -Xclang -analyzer-checker=nullability.NullPassedToNonnull \                   
  -Xclang -analyzer-checker=nullability.NullReturnedFromNonnull \               
  -Xclang -analyzer-checker=optin.cplusplus.UninitializedObject \               
  -Xclang -analyzer-checker=optin.cplusplus.VirtualCall \                       
  -Xclang -analyzer-checker=optin.portability.UnixAPI \                         
  -Xclang -analyzer-checker=security.FloatLoopCounter \                         
  -Xclang -analyzer-checker=security.insecureAPI.UncheckedReturn \              
  -Xclang -analyzer-checker=security.insecureAPI.getpw \
  -Xclang -analyzer-checker=security.insecureAPI.gets \                         
  -Xclang -analyzer-checker=security.insecureAPI.mkstemp \                      
  -Xclang -analyzer-checker=security.insecureAPI.mktemp \                       
  -Xclang -analyzer-checker=security.insecureAPI.rand \                         
  -Xclang -analyzer-checker=security.insecureAPI.vfork \                        
  -Xclang -analyzer-checker=unix.API \                                          
  -Xclang -analyzer-checker=unix.DynamicMemoryModeling \                        
  -Xclang -analyzer-checker=unix.Malloc \                                       
  -Xclang -analyzer-checker=unix.MallocSizeof \                                 
  -Xclang -analyzer-checker=unix.MismatchedDeallocator \                        
  -Xclang -analyzer-checker=unix.Vfork \                                        
  -Xclang -analyzer-checker=unix.cstring.BadSizeArg \                           
  -Xclang -analyzer-checker=unix.cstring.CStringModeling \                      
  -Xclang -analyzer-checker=unix.cstring.NullArg \                              
  -Xclang -analyzer-checker=valist.CopyToSelf \                                 
  -Xclang -analyzer-checker=valist.Uninitialized \                              
  -Xclang -analyzer-checker=valist.Unterminated \                               
  -Xclang -analyzer-checker=valist.ValistBase \                                 
  -Xclang -analyzer-config \                                                    
  -Xclang aggressive-binary-operation-simplification=true \                     
  -Xclang -analyzer-config \                                                    
  -Xclang experimental-enable-naive-ctu-analysis=true \                         
  -Xclang -analyzer-config \                                                    
  -Xclang ctu-dir=/home/gamesh411/bitcoin/reports/ctu-dir/x86_64 \              
  -Xclang -analyzer-config \                                                    
  -Xclang display-ctu-progress=true \                                           
  -Xclang -analyzer-config \                                                    
  -Xclang ctu-invocation-list=/home/gamesh411/bitcoin/reports/ctu-dir/x86_64/invocation-list.yml \
  -x c++ \                                                                      
  --target=x86_64-linux-gnu \                                                   
  -std=gnu++14 \                                                                
  -std=c++11 \                                                                  
  -DHAVE_CONFIG_H \                                                             
  -I/home/gamesh411/bitcoin/src \                                               
  -I/home/gamesh411/bitcoin/src/config \                                        
  -U_FORTIFY_SOURCE \                                                           
  -D_FORTIFY_SOURCE=2 \                                                         
  -I/home/gamesh411/bitcoin/src/obj \                                           
  -I/home/gamesh411/bitcoin/src/secp256k1/include \                             
  -DBUILD_BITCOIN_INTERNAL \                                                    
  -DHAVE_BUILD_INFO \                                                           
  -D__STDC_FORMAT_MACROS \                                                      
  -fstack-protector-all \                                                       
  -Wno-unused-parameter \
  -Wno-implicit-fallthrough \                                                   
  -O2 \                                                                         
  -fPIC \                                                                       
  -DPIC \                                                                       
  -isystem /usr/include/c++/9 \                                                 
  -isystem /usr/include/x86_64-linux-gnu/c++/9 \                                
  -isystem /usr/include/c++/9/backward \                                        
  -isystem /usr/local/include \                                                 
  -isystem /usr/include/x86_64-linux-gnu \                                      
  -isystem /usr/include \                                                       
  /home/gamesh411/bitcoin/src/script/interpreter.cpp

with the attached invocation-list.yml.

shafik added inline comments.Nov 30 2020, 2:54 PM
lldb/test/API/commands/expression/import-std-module/deque-basic/TestDequeFromStdModule.py
25

Why do the default arguments not show up in the results anymore?

@gamesh411 I recreated the setup you listed (thanks for that btw) but for me this works just fine. I assume the crash happens in a class template from one of the external libraries. It probably works for me because I don't have the same library version as you have, but just from the backtrace it's hard to know where the error could come from.

I'm not sure if the XTU analyzer has a way to create reproducers (maybe @martong knows), but if you could apply the patch below, recompile/run the analyzer and post the output that would help a lot with figuring out what code on your system is causing the crash:

diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 67ee8c0956d6..a471501aa71e 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -4408,6 +4408,9 @@ static bool NeedsInjectedClassNameType(const RecordDecl *D) {
 /// injected class name type for the specified templated declaration.
 QualType ASTContext::getInjectedClassNameType(CXXRecordDecl *Decl,
                                               QualType TST) const {
+  if (!NeedsInjectedClassNameType(Decl)) {
+    Decl->dumpColor();
+  }
   assert(NeedsInjectedClassNameType(Decl));
   if (Decl->TypeForDecl) {
     assert(isa<InjectedClassNameType>(Decl->TypeForDecl));

The output from this code is probably colorized in your terminal and looks a bit like this:

|-ClassTemplateDecl 0x7ff94c04a0a0 <deduction.cpp:1:7, line:3:7> line:1:36 A
| |-TemplateTypeParmDecl 0x7ff94c049f50 <col:17, col:26> col:26 referenced typename depth 0 index 0 T
| |-CXXRecordDecl 0x7ff94c04a010 <col:29, line:3:7> line:1:36 struct A definition
| | |-DefinitionData empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
| | | |-DefaultConstructor defaulted_is_constexpr
| | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
| | | |-MoveConstructor exists simple trivial needs_implicit
[...]

FWIW, I don't think the patch itself introduces this regression, but it just causes more of the AST to be imported (and the import of these AST nodes then runs into an unsupported use case). This would most likely already crash if the analysed source code referenced that class template in some other way.

lldb/test/API/commands/expression/import-std-module/deque-basic/TestDequeFromStdModule.py
25

Because we don't show args that match the default arg in the display type (which is identical to what Clang does). See also rdar://59292534

Hey Raphael, thanks for looking into the CTU crash!

I also had a look and I could reproduce that on Linux Ubuntu 18.04 with GCC 7. I think the discrepancy stems from GCC's libstdc++ and MacOS's libc++ implementation differences of basic_streambuf. This is the CXXRecordDecl which does not need an injected class name type (so there is the assert). However, the situation is more complex because there is a 5 long redecl chain (streambuf is forward declared in many places).

Anyway, I don't think that this patch itself caused the crash, it just revealed some other issues that are related to the possibly flawed import logic of injected class (name) types. I am adding another college @balazske as a subscriber because he started to investigate the crash deeper.

Hey Raphael, thanks for looking into the CTU crash!

I also had a look and I could reproduce that on Linux Ubuntu 18.04 with GCC 7. I think the discrepancy stems from GCC's libstdc++ and MacOS's libc++ implementation differences of basic_streambuf. This is the CXXRecordDecl which does not need an injected class name type (so there is the assert). However, the situation is more complex because there is a 5 long redecl chain (streambuf is forward declared in many places).

Anyway, I don't think that this patch itself caused the crash, it just revealed some other issues that are related to the possibly flawed import logic of injected class (name) types. I am adding another college @balazske as a subscriber because he started to investigate the crash deeper.

Quick note: I should have mention that I actually tried reproducing this issue with libstdc++/GCC 10.2.0 on Arch Linux.

The problem is reproduced and fixed in D94067. It is caused by import of default template arguments indirectly, because that import causes lot of other things to be imported. And the import of default arguments happens in a incomplete state, when the "templated" CXXRecordDecl does exist but has no described template set yet.

There are still problems related to import type argument default values: If there are forward declarations of the same template, the "inheritedness" of these arguments (in AST) is not set correctly and the default arguments can appear at more places instead of at only one (that the others reference to).