[llvm] [llvm] Construct SmallVector with iterator ranges (NFC) (PR #136460)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 21 14:25:42 PDT 2025


================
@@ -515,9 +515,7 @@ PreservedAnalyses CGSCCToFunctionPassAdaptor::run(LazyCallGraph::SCC &C,
   FunctionAnalysisManager &FAM =
       AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager();
 
-  SmallVector<LazyCallGraph::Node *, 4> Nodes;
-  for (LazyCallGraph::Node &N : C)
-    Nodes.push_back(&N);
+  SmallVector<LazyCallGraph::Node *, 4> Nodes(llvm::make_pointer_range(C));
----------------
kazutakahirata wrote:

Yes, the `SmallVector` range-based ctor supports implicit conversions.

Using `=` here would result in:

```
llvm/lib/Analysis/CGSCCPassManager.cpp:518:41: error: no viable conversion from 'iterator_range<pointer_iterator<pointee_iterator<Node *const *, Node>>>' to 'SmallVector<LazyCallGraph::Node *, 4>'
  SmallVector<LazyCallGraph::Node *, 4> Nodes = llvm::make_pointer_range(C);
                                        ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
```


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


More information about the llvm-commits mailing list