[clang] [analyzer] Remove getRegionName from LifetimeModeling and its dependent checkers (PR #214245)

Benedek Kaibas via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 6 04:22:55 PDT 2026


================
@@ -71,7 +71,8 @@ void DanglingPtrDeref::reportUseAfterScope(const MemRegion *Region,
                                            CheckerContext &C) const {
   auto BR = std::make_unique<PathSensitiveBugReport>(
       BugMsg,
-      (llvm::Twine("Use of ") + lifetime_modeling::getRegionName(Region) +
+      (llvm::Twine("Use of ") +
+       Region->getDescriptiveName(/*UseQuotes=*/true, /*AllowFallback=*/true) +
        " after its lifetime ended."),
       N);
----------------
benedekaibas wrote:

I put my focus on the LCV implementation yesterady, but quickly I came back to this. I agree with your question that the fallback mechanism can be non-deterministic, especially compared to what we have now. If I want to use `getDescriptiveName` directly with its own fallback mechanism then I still need to "guard" it like:
  
 ```cpp
  PathDiagnosticPieceRef
  UseAfterLifetimeEndBRVisitor::getEndPath(const ExplodedNode *N,
                                           BugReporterContext &BRC,
                                           PathSensitiveBugReport &BR) {
    std::string Message = SourceRegion->getDescriptiveName(
        /*UseQuotes=*/true, /*AllowFallback=*/false);
    if (Message.empty())
      Message = "the region";
  
    auto Piece = createSourcePiece(
        N, BRC, (llvm::Twine("Lifetime of ") + Message + " ended here").str());
    return Piece;
  }
  ```
  
But this would also need a helper function basically very similar to `getRegionName`. At this point I think it is better to keep `getRegionName` since we do not really earn much with the change this PR would introduce. 

https://github.com/llvm/llvm-project/pull/214245


More information about the cfe-commits mailing list