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
cpp
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.
Notes on strict weak ordering and why violating std::sort comparator requirements can corrupt results.