vabridgers wrote: This change has caused a regression in one of our systems integration tests that test static analysis for the bstring lib project (https://github.com/websnarf/bstrlib) with cross translation unit analysis enabled. Unfortunately I do not have a simple reproducer that stands alone just using clang, but I do have a reproducer that uses CodeChecker and can paste in the crash signature here. Please consider reverting the change until a proper fix can be made and this issue is addressed.
bstrwrap.cpp 1 #include "bstrwrap.h" 2 #include <iostream> 3 4 Bstrlib::CBString::CBString () { 5 } bstrwrap.h 1 #include <string> 2 3 namespace Bstrlib { 4 struct CBString { 5 CBString (); 6 }; 7 8 extern std::istream& getline (std::istream& sin, CBString& b, char terminator='\n'); 9 10 } // namespace Bstrlib test.cpp 1 #include "bstrwrap.h" 2 3 int test0 (void) { 4 Bstrlib::CBString c0; 5 return 0; 6 } Using CodeChecker from https://github.com/Ericsson/codechecker, Log the build ``CodeChecker log -b "g++ -c test.cpp bstrwrap.cpp" -o comp.json`` Repro step ``env PATH=<UpstreamCompilerPath>:$PATH CC_ANALYZERS_FROM_PATH=1 CodeChecker analyze comp.json --clean --ctu -o report --analyzers clangsa`` The crash signature, appears to be crashing in AST Import. 1. <eof> parser at end of file 2. While analyzing stack: #0 Calling test0() 3. test.cpp:4:21: Error evaluating statement 4. test.cpp:4:21: Error evaluating statement #0 0x0000000003cb7248 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (clang-19+0x3cb7248) #1 0x0000000003cb4f2c llvm::sys::CleanupOnSignal(unsigned long) (clang-19+0x3cb4f2c) #2 0x0000000003bfd308 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0 #3 0x00007f9e5d53d630 __restore_rt sigaction.c:0:0 #4 0x00007f9e5af39387 raise (/lib64/libc.so.6+0x36387) #5 0x00007f9e5af3aa78 abort (/lib64/libc.so.6+0x37a78) #6 0x00007f9e5af321a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6) #7 0x00007f9e5af32252 (/lib64/libc.so.6+0x2f252) #8 0x00000000072ada26 clang::FunctionDecl::setDescribedFunctionTemplate(clang::FunctionTemplateDecl*) (clang-19+0x72ada26) #9 0x0000000007190a56 clang::ASTNodeImporter::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*) (clang-19+0x7190a56) #10 0x000000000716e998 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*) crtstuff.c:0:0 #11 0x000000000716eedb clang::ASTImporter::Import(clang::Decl*) (clang-19+0x716eedb) #12 0x0000000007172108 std::conditional<is_base_of_v<clang::Type, clang::Decl>, llvm::Expected<clang::Decl const*>, llvm::Expected<clang::Decl*>>::type clang::ASTNodeImporter::import<clang::Decl>(clang::Decl*) crtstuff.c:0:0 #13 0x000000000717d072 clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) (clang-19+0x717d072) #14 0x000000000718677b clang::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*) (clang-19+0x718677b) #15 0x000000000716ea38 clang::declvisitor::Base<std::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*) crtstuff.c:0:0 #16 0x000000000716eedb clang::ASTImporter::Import(clang::Decl*) (clang-19+0x716eedb) #17 0x0000000007175146 clang::ASTImporter::Import(clang::NestedNameSpecifier*) (clang-19+0x7175146) #18 0x000000000717a0bb clang::ASTNodeImporter::VisitElaboratedType(clang::ElaboratedType const*) (clang-19+0x717a0bb) #19 0x0000000007174945 clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType>>::Visit(clang::Type const*) crtstuff.c:0:0 #20 0x0000000007174c07 clang::ASTImporter::Import(clang::Type const*) (clang-19+0x7174c07) #21 0x0000000007175bd7 clang::ASTImporter::Import(clang::QualType) (clang-19+0x7175bd7) #22 0x0000000007177e20 clang::ASTNodeImporter::VisitLValueReferenceType(clang::LValueReferenceType const*) (clang-19+0x7177e20) https://github.com/llvm/llvm-project/pull/87144 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits