[clang] [LifetimeSafety] Make the dataflow analysis generic (PR #148222)
Sjoerd Meijer via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 18 12:27:34 PDT 2025
sjoerdmeijer wrote:
This is a heads up, I have bisected a compiler crash to this commit.
The stack trace:
```
#0 0x0000aaaab380d358 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-project/llvm/lib/Support/Unix/Signals.inc:834:11
#1 0x0000aaaab380d878 PrintStackTraceSignalHandler(void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:918:1
#2 0x0000aaaab380b918 llvm::sys::RunSignalHandlers() /llvm-project/llvm/lib/Support/Signals.cpp:104:5
#3 0x0000aaaab380cba0 llvm::sys::CleanupOnSignal(unsigned long) /llvm-project/llvm/lib/Support/Unix/Signals.inc:374:1
#4 0x0000aaaab372eaf0 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:71:7
#5 0x0000aaaab372ef24 CrashRecoverySignalHandler(int) /llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:5
#6 0x0000fffff7fb09d0 (linux-vdso.so.1+0x9d0)
#7 0x0000aaaab6c7c1c4 clang::CFGBlock::getBlockID() const /llvm-project/clang/include/clang/Analysis/CFG.h:1111:40
#8 0x0000aaaab8407cd8 clang::(anonymous namespace)::DataflowAnalysis<clang::(anonymous namespace)::LoanPropagationAnalysis, clang::(anonymous namespace)::LoanPropagationLattice>::run() /llvm-project/clang/lib/Analysis/LifetimeSafety.cpp:561:38
#9 0x0000aaaab84074ec clang::runLifetimeSafetyAnalysis(clang::DeclContext const&, clang::CFG const&, clang::AnalysisDeclContext&) /llvm-project/clang/lib/Analysis/LifetimeSafety.cpp:801:3
#10 0x0000aaaab758a9a8 clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::sema::FunctionScopeInfo*, clang::Decl const*, clang::QualType) /llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp:3034:7
#11 0x0000aaaab7548ed8 clang::Sema::PopFunctionScopeInfo(clang::sema::AnalysisBasedWarnings::Policy const*, clang::Decl const*, clang::QualType) /llvm-project/clang/lib/Sema/Sema.cpp:2458:3
#12 0x0000aaaab7816e80 clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) /llvm-project/clang/lib/Sema/SemaDecl.cpp:16679:3
#13 0x0000aaaab7814d9c clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*) /llvm-project/clang/lib/Sema/SemaDecl.cpp:16148:3
#14 0x0000aaaab744bf24 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /llvm-project/clang/lib/Parse/ParseStmt.cpp:2402:18
#15 0x0000aaaab73900ac clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) /llvm-project/clang/lib/Parse/Parser.cpp:1449:3
#16 0x0000aaaab741d97c clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) /llvm-project/clang/lib/Parse/ParseDecl.cpp:2262:21
#17 0x0000aaaab738f1d0 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /llvm-project/clang/lib/Parse/Parser.cpp:1187:10
#18 0x0000aaaab738e800 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /llvm-project/clang/lib/Parse/Parser.cpp:1209:12
#19 0x0000aaaab738e17c clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /llvm-project/clang/lib/Parse/Parser.cpp:1032:14
#20 0x0000aaaab73f4164 clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) /llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:236:7
#21 0x0000aaaab73f3a74 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) /llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:214:3
#22 0x0000aaaab741c748 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) /llvm-project/clang/lib/Parse/ParseDecl.cpp:1909:12
#23 0x0000aaaab738dc88 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /llvm-project/clang/lib/Parse/Parser.cpp:946:14
#24 0x0000aaaab738c2ec clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /llvm-project/clang/lib/Parse/Parser.cpp:745:12
#25 0x0000aaaab738733c clang::ParseAST(clang::Sema&, bool, bool) /llvm-project/clang/lib/Parse/ParseAST.cpp:170:16
#26 0x0000aaaab4fa47f0 clang::ASTFrontendAction::ExecuteAction() /llvm-project/clang/lib/Frontend/FrontendAction.cpp:1344:1
```
I don't have a reproducer yet, I will work on that on Monday.
But maybe this location `LifetimeSafety.cpp:561:38` helps, @usx95 ?
https://github.com/llvm/llvm-project/pull/148222
More information about the cfe-commits
mailing list