A comparison of the CIR lifetime checker and clang-tidy's bugprone-use-after-move check on the Clang source tree measures execution time and estimates diagnostic quality from reviewed false positives.
Topic
static-analysis
Part four extends LifetimeCheck through memory operations, structured control flow, scope cleanup, coroutine tasks, and returned-lambda safety.
Part two follows the LifetimeCheck pass architecture, its type categories, points-to sets, allocation classification, and operation dispatch.
Part one introduces ClangIR as an MLIR-based representation for C++ static analysis and uses LifetimeCheck to motivate the series.
Part three shows how ClangIR AST attributes, move detection, smart pointer handling, and moved-from state tracking detect use-after-move bugs.