[clang] 62abc18 - clang: Add range-based CFG::try_blocks()

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 10 12:16:04 PDT 2021


Author: Nico Weber
Date: 2021-10-10T15:15:37-04:00
New Revision: 62abc1842bc8b4860f9f7c1165164740fccef64e

URL: https://github.com/llvm/llvm-project/commit/62abc1842bc8b4860f9f7c1165164740fccef64e
DIFF: https://github.com/llvm/llvm-project/commit/62abc1842bc8b4860f9f7c1165164740fccef64e.diff

LOG: clang: Add range-based CFG::try_blocks()

..and use it. No behavior change.

Added: 
    

Modified: 
    clang/include/clang/Analysis/CFG.h
    clang/lib/Analysis/ReachableCode.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h
index 9e32eb8e066a..f9223fe58a27 100644
--- a/clang/include/clang/Analysis/CFG.h
+++ b/clang/include/clang/Analysis/CFG.h
@@ -1337,6 +1337,7 @@ class CFG {
   const CFGBlock * getIndirectGotoBlock() const { return IndirectGotoBlock; }
 
   using try_block_iterator = std::vector<const CFGBlock *>::const_iterator;
+  using try_block_range = llvm::iterator_range<try_block_iterator>;
 
   try_block_iterator try_blocks_begin() const {
     return TryDispatchBlocks.begin();
@@ -1346,6 +1347,10 @@ class CFG {
     return TryDispatchBlocks.end();
   }
 
+  try_block_range try_blocks() const {
+    return try_block_range(try_blocks_begin(), try_blocks_end());
+  }
+
   void addTryDispatchBlock(const CFGBlock *block) {
     TryDispatchBlocks.push_back(block);
   }

diff  --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index 9abcf20eacba..be4ab0be373e 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -694,10 +694,8 @@ void FindUnreachableCode(AnalysisDeclContext &AC, Preprocessor &PP,
   // If there aren't explicit EH edges, we should include the 'try' dispatch
   // blocks as roots.
   if (!AC.getCFGBuildOptions().AddEHEdges) {
-    for (CFG::try_block_iterator I = cfg->try_blocks_begin(),
-         E = cfg->try_blocks_end() ; I != E; ++I) {
-      numReachable += scanMaybeReachableFromBlock(*I, PP, reachable);
-    }
+    for (const CFGBlock *B : cfg->try_blocks())
+      numReachable += scanMaybeReachableFromBlock(B, PP, reachable);
     if (numReachable == cfg->getNumBlockIDs())
       return;
   }


        


More information about the cfe-commits mailing list