diff options
author | 2020-05-13 17:30:32 +0100 | |
---|---|---|
committer | 2020-05-14 08:18:05 +0000 | |
commit | 5d2311a349f208f056b33da8fc9c950aad1a7ffe (patch) | |
tree | c675c1e49da6057ce1ed8f9f453db9881198f30f /compiler/optimizing/superblock_cloner_test.cc | |
parent | 58520dfba31d6eeef75f5babff15e09aa28e5db8 (diff) |
Optimizing: Refactor ImprovedOptimizingUnitTest.
And merge all functionality into OptimizingUnitTest.
Test: m test-art-host-gtest
Change-Id: I69a4e8c489462700ec0eb9ed93d5cdbdb6147f1a
Diffstat (limited to 'compiler/optimizing/superblock_cloner_test.cc')
-rw-r--r-- | compiler/optimizing/superblock_cloner_test.cc | 72 |
1 files changed, 32 insertions, 40 deletions
diff --git a/compiler/optimizing/superblock_cloner_test.cc b/compiler/optimizing/superblock_cloner_test.cc index a46334bfca..d8d68b7763 100644 --- a/compiler/optimizing/superblock_cloner_test.cc +++ b/compiler/optimizing/superblock_cloner_test.cc @@ -30,27 +30,23 @@ using HEdgeSet = SuperblockCloner::HEdgeSet; // This class provides methods and helpers for testing various cloning and copying routines: // individual instruction cloning and cloning of the more coarse-grain structures. -class SuperblockClonerTest : public ImprovedOptimizingUnitTest { - private: - void CreateParameters() override { - parameters_.push_back(new (GetAllocator()) HParameterValue(graph_->GetDexFile(), - dex::TypeIndex(0), - 0, - DataType::Type::kInt32)); +class SuperblockClonerTest : public OptimizingUnitTest { + protected: + void InitGraphAndParameters() { + InitGraph(); + AddParameter(new (GetAllocator()) HParameterValue(graph_->GetDexFile(), + dex::TypeIndex(0), + 0, + DataType::Type::kInt32)); } - public: void CreateBasicLoopControlFlow(HBasicBlock* position, HBasicBlock* successor, /* out */ HBasicBlock** header_p, /* out */ HBasicBlock** body_p) { - HBasicBlock* loop_preheader = new (GetAllocator()) HBasicBlock(graph_); - HBasicBlock* loop_header = new (GetAllocator()) HBasicBlock(graph_); - HBasicBlock* loop_body = new (GetAllocator()) HBasicBlock(graph_); - - graph_->AddBlock(loop_preheader); - graph_->AddBlock(loop_header); - graph_->AddBlock(loop_body); + HBasicBlock* loop_preheader = AddNewBlock(); + HBasicBlock* loop_header = AddNewBlock(); + HBasicBlock* loop_body = AddNewBlock(); position->ReplaceSuccessor(successor, loop_preheader); @@ -121,7 +117,7 @@ TEST_F(SuperblockClonerTest, IndividualInstrCloner) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -151,9 +147,9 @@ TEST_F(SuperblockClonerTest, IndividualInstrCloner) { TEST_F(SuperblockClonerTest, CloneBasicBlocks) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - ArenaAllocator* arena = graph_->GetAllocator(); + ArenaAllocator* arena = GetAllocator(); - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -232,9 +228,9 @@ TEST_F(SuperblockClonerTest, CloneBasicBlocks) { TEST_F(SuperblockClonerTest, AdjustControlFlowInfo) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - ArenaAllocator* arena = graph_->GetAllocator(); + ArenaAllocator* arena = GetAllocator(); - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -271,13 +267,12 @@ TEST_F(SuperblockClonerTest, AdjustControlFlowInfo) { TEST_F(SuperblockClonerTest, IsGraphConnected) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - ArenaAllocator* arena = graph_->GetAllocator(); + ArenaAllocator* arena = GetAllocator(); - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); - HBasicBlock* unreachable_block = new (GetAllocator()) HBasicBlock(graph_); - graph_->AddBlock(unreachable_block); + HBasicBlock* unreachable_block = AddNewBlock(); HBasicBlockSet bb_set( arena, graph_->GetBlocks().size(), false, kArenaAllocSuperblockCloner); @@ -297,7 +292,7 @@ TEST_F(SuperblockClonerTest, LoopPeeling) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -334,7 +329,7 @@ TEST_F(SuperblockClonerTest, LoopUnrolling) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -371,7 +366,7 @@ TEST_F(SuperblockClonerTest, LoopVersioning) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -419,16 +414,14 @@ TEST_F(SuperblockClonerTest, LoopPeelingMultipleBackEdges) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); // Transform a basic loop to have multiple back edges. HBasicBlock* latch = header->GetSuccessors()[1]; - HBasicBlock* if_block = new (GetAllocator()) HBasicBlock(graph_); - HBasicBlock* temp1 = new (GetAllocator()) HBasicBlock(graph_); - graph_->AddBlock(if_block); - graph_->AddBlock(temp1); + HBasicBlock* if_block = AddNewBlock(); + HBasicBlock* temp1 = AddNewBlock(); header->ReplaceSuccessor(latch, if_block); if_block->AddSuccessor(latch); if_block->AddSuccessor(temp1); @@ -474,7 +467,7 @@ TEST_F(SuperblockClonerTest, LoopPeelingNested) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); // Create the following nested structure of loops // Headers: 1 2 3 @@ -521,7 +514,7 @@ TEST_F(SuperblockClonerTest, OuterLoopPopulationAfterInnerPeeled) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); // Create the following nested structure of loops // Headers: 1 2 3 4 @@ -578,7 +571,7 @@ TEST_F(SuperblockClonerTest, NestedCaseExitToOutermost) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); // Create the following nested structure of loops then peel loop3. // Headers: 1 2 3 @@ -597,8 +590,7 @@ TEST_F(SuperblockClonerTest, NestedCaseExitToOutermost) { HBasicBlock* loop_body3 = loop_body; // Change the loop3 - insert an exit which leads to loop1. - HBasicBlock* loop3_extra_if_block = new (GetAllocator()) HBasicBlock(graph_); - graph_->AddBlock(loop3_extra_if_block); + HBasicBlock* loop3_extra_if_block = AddNewBlock(); loop3_extra_if_block->AddInstruction(new (GetAllocator()) HIf(parameters_[0])); loop3_header->ReplaceSuccessor(loop_body3, loop3_extra_if_block); @@ -631,9 +623,9 @@ TEST_F(SuperblockClonerTest, NestedCaseExitToOutermost) { TEST_F(SuperblockClonerTest, FastCaseCheck) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - ArenaAllocator* arena = graph_->GetAllocator(); + ArenaAllocator* arena = GetAllocator(); - InitGraph(); + InitGraphAndParameters(); CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body); CreateBasicLoopDataFlow(header, loop_body); graph_->BuildDominatorTree(); @@ -688,7 +680,7 @@ TEST_F(SuperblockClonerTest, FindCommonLoop) { HBasicBlock* header = nullptr; HBasicBlock* loop_body = nullptr; - InitGraph(); + InitGraphAndParameters(); // Create the following nested structure of loops // Headers: 1 2 3 4 5 |