gribozavr wrote: @mizvekov It looks like this PR introduces a crash, I'm going to revert it. Here is a reproducer:
``` $ cat parser_test-42bc8e.cpp enum a : char; class b { public: static b c; friend bool operator==(b, b) = default; a d; }; void e() { b f; f == b::c; } $ clang "-cc1" "-triple" "x86_64-grtev4-linux-gnu" "-std=gnu++20" "-x" "c++" -analyze -analyzer-checker=debug.DumpCFG parser_test-42bc8e.cpp parser_test-42bc8e.cpp:10:5: warning: equality comparison result unused [-Wunused-comparison] 10 | f == b::c; | ~~^~~~~~~ bool operator==(b, b) noexcept = default [B2 (ENTRY)] Succs (1): B1 [B1] 1: Unhandled anonymous declaration kind UNREACHABLE executed at [redacted]/llvm-project/clang/lib/AST/StmtPrinter.cpp:1289! PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script. Stack dump: 0. Program arguments: [redacted]/bin/clang -cc1 -triple x86_64-grtev4-linux-gnu -std=gnu++20 -x c++ -analyze -analyzer-checker=debug.DumpCFG parser_test-42bc8e.cpp 1. <eof> parser at end of file #0 0x000055f6a75d30c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) ([redacted]/bin/clang+0x3e1d0c8) #1 0x000055f6a75d0c7e llvm::sys::RunSignalHandlers() ([redacted]/bin/clang+0x3e1ac7e) #2 0x000055f6a75d3758 SignalHandler(int) Signals.cpp:0:0 #3 0x00007fcab9e56590 (/lib/x86_64-linux-gnu/libc.so.6+0x3f590) #4 0x00007fcab9ea53ac __pthread_kill_implementation ./nptl/pthread_kill.c:44:76 #5 0x00007fcab9e564f2 raise ./signal/../sysdeps/posix/raise.c:27:6 #6 0x00007fcab9e3f4ed abort ./stdlib/abort.c:81:7 #7 0x000055f6a754a360 llvm::install_out_of_memory_new_handler() ([redacted]/bin/clang+0x3d94360) #8 0x000055f6aaadd675 ([redacted]/bin/clang+0x7327675) #9 0x000055f6aaad49ec clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const ([redacted]/bin/clang +0x731e9ec) #10 0x000055f6aa31d7b7 print_elem(llvm::raw_ostream&, (anonymous namespace)::StmtPrinterHelper&, clang::CFGElement const&) CFG.cpp:0:0 #11 0x000055f6aa31f641 print_block(llvm::raw_ostream&, clang::CFG const*, clang::CFGBlock const&, (anonymous namespace)::StmtPrinterHelper&, bool, bool) CFG.cpp:0:0 #12 0x000055f6aa31ebaf clang::CFG::print(llvm::raw_ostream&, clang::LangOptions const&, bool) const ([redacted]/bin/clang+0x6b68baf) #13 0x000055f6a94d7b01 void clang::ento::check::ASTCodeBody::_checkBody<(anonymous namespace)::CFGDumper>(void*, clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) DebugCheckers.cpp:0:0 #14 0x000055f6a96dbda1 clang::ento::CheckerManager::runCheckersOnASTBody(clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) ([redacted]/bin/clang+0x5f25da1) #15 0x000055f6a9441fa1 (anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang::Decl const*, void>>*) AnalysisConsumer.cp p:0:0 #16 0x000055f6a943f860 (anonymous namespace)::AnalysisConsumer::VisitFunctionDecl(clang::FunctionDecl*) AnalysisConsumer.cpp:0:0 #17 0x000055f6a943fd9a non-virtual thunk to (anonymous namespace)::AnalysisConsumer::VisitFunctionDecl(clang::FunctionDecl*) AnalysisConsumer.cpp:0:0 #18 0x000055f6aa73a9b6 clang::DynamicRecursiveASTVisitor::TraverseFunctionDecl(clang::FunctionDecl*) ([redacted]/bin/clang+0x6f849b6) #19 0x000055f6aa734fe7 clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) ([redacted]/bin/clang+0x6f7efe7) #20 0x000055f6aa741ba0 clang::DynamicRecursiveASTVisitor::TraverseFriendDecl(clang::FriendDecl*) ([redacted]/bin/clang+0x6f8bba0) #21 0x000055f6aa735340 clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) ([redacted]/bin/clang+0x6f7f340) #22 0x000055f6aa73e138 clang::DynamicRecursiveASTVisitor::TraverseCXXRecordDecl(clang::CXXRecordDecl*) ([redacted]/bin/clang+0x6f88138) #23 0x000055f6aa735205 clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) ([redacted]/bin/clang+0x6f7f205) #24 0x000055f6a943e408 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0 #25 0x000055f6a9814bb9 clang::ParseAST(clang::Sema&, bool, bool) ([redacted]/bin/clang+0x605ebb9) #26 0x000055f6a805ed36 clang::FrontendAction::Execute() ([redacted]/bin/clang+0x48a8d36) #27 0x000055f6a7fcbe3d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) ([redacted]/bin/clang+0x4815e3d) #28 0x000055f6a8145ae7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) ([redacted]/bin/clang+0x498fae7) #29 0x000055f6a4c88f6a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) ([redacted]/bin/clang+0x14d2f6a) #30 0x000055f6a4c854ce ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0 #31 0x000055f6a4c844e6 clang_main(int, char**, llvm::ToolContext const&) ([redacted]/bin/clang+0x14ce4e6) #32 0x000055f6a4c947b7 main ([redacted]/bin/clang+0x14de7b7) #33 0x00007fcab9e40c8a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3 #34 0x00007fcab9e40d45 call_init ./csu/../csu/libc-start.c:128:20 #35 0x00007fcab9e40d45 __libc_start_main ./csu/../csu/libc-start.c:347:5 #36 0x000055f6a4c83031 _start ([redacted]/bin/clang+0x14cd031) Aborted ``` https://github.com/llvm/llvm-project/pull/124605 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits