diff options
author | Arthur Eubanks <aeubanks@google.com> | 2020-12-16 17:14:13 -0800 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2020-12-17 11:39:34 -0800 |
commit | 7529fab602c728d12c387e5eb5bbced1ec139dbd (patch) | |
tree | 365528c87c66d559c074eb1cdd3d1076b73d2195 /llvm/unittests/Analysis/CGSCCPassManagerTest.cpp | |
parent | 58f2b765ebec45643f0b0d6737fb3dc339f75cde (diff) | |
download | llvm-7529fab602c728d12c387e5eb5bbced1ec139dbd.zip llvm-7529fab602c728d12c387e5eb5bbced1ec139dbd.tar.gz llvm-7529fab602c728d12c387e5eb5bbced1ec139dbd.tar.bz2 |
[test] Factor out creation of copy of SCC Nodes into function
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D93434
Diffstat (limited to 'llvm/unittests/Analysis/CGSCCPassManagerTest.cpp')
-rw-r--r-- | llvm/unittests/Analysis/CGSCCPassManagerTest.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/llvm/unittests/Analysis/CGSCCPassManagerTest.cpp b/llvm/unittests/Analysis/CGSCCPassManagerTest.cpp index 2c3b0c1..5b68b98 100644 --- a/llvm/unittests/Analysis/CGSCCPassManagerTest.cpp +++ b/llvm/unittests/Analysis/CGSCCPassManagerTest.cpp @@ -1714,6 +1714,16 @@ TEST_F(CGSCCPassManagerTest, TestUpdateCGAndAnalysisManagerForPasses10) { MPM.run(*M, MAM); } +// Returns a vector containing the SCC's nodes. Useful for not iterating over an +// SCC while mutating it. +static SmallVector<LazyCallGraph::Node *> SCCNodes(LazyCallGraph::SCC &C) { + SmallVector<LazyCallGraph::Node *> Nodes; + for (auto &N : C) + Nodes.push_back(&N); + + return Nodes; +} + // Start with call recursive f, create f -> g and ref recursive f. TEST_F(CGSCCPassManagerTest, TestInsertionOfNewFunctions1) { std::unique_ptr<Module> M = parseIR("define void @f() {\n" @@ -1734,12 +1744,7 @@ TEST_F(CGSCCPassManagerTest, TestInsertionOfNewFunctions1) { auto &FAM = AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager(); - // Don't iterate over SCC while changing it. - SmallVector<LazyCallGraph::Node *> Nodes; - for (auto &N : C) - Nodes.push_back(&N); - - for (LazyCallGraph::Node *N : Nodes) { + for (LazyCallGraph::Node *N : SCCNodes(C)) { Function &F = N->getFunction(); if (F.getName() != "f") continue; @@ -1801,12 +1806,7 @@ TEST_F(CGSCCPassManagerTest, TestInsertionOfNewFunctions2) { auto &FAM = AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager(); - // Don't iterate over SCC while changing it. - SmallVector<LazyCallGraph::Node *> Nodes; - for (auto &N : C) - Nodes.push_back(&N); - - for (LazyCallGraph::Node *N : Nodes) { + for (LazyCallGraph::Node *N : SCCNodes(C)) { Function &F = N->getFunction(); if (F.getName() != "f") continue; @@ -1908,12 +1908,7 @@ TEST_F(CGSCCPassManagerTest, TestInsertionOfNewNonTrivialCallEdge) { auto &FAM = AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager(); - // Don't iterate over SCC while changing it. - SmallVector<LazyCallGraph::Node *> Nodes; - for (auto &N : C) - Nodes.push_back(&N); - - for (LazyCallGraph::Node *N : Nodes) { + for (LazyCallGraph::Node *N : SCCNodes(C)) { Function &F = N->getFunction(); if (F.getName() != "f1") continue; |