[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