diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dex/quick/arm/assemble_arm.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/find_loops_test.cc | 49 |
2 files changed, 31 insertions, 20 deletions
diff --git a/compiler/dex/quick/arm/assemble_arm.cc b/compiler/dex/quick/arm/assemble_arm.cc index 06d9dd53b5..dcec861e22 100644 --- a/compiler/dex/quick/arm/assemble_arm.cc +++ b/compiler/dex/quick/arm/assemble_arm.cc @@ -427,7 +427,7 @@ const ArmEncodingMap ArmMir2Lir::EncodingMap[kArmLast] = { REG_DEF_LR | NEEDS_FIXUP, "vldr", "!0s, [!1C, #!2E]", 4, kFixupVLoad), ENCODING_MAP(kThumb2Vldrd, 0xed900b00, kFmtDfp, 22, 12, kFmtBitBlt, 19, 16, kFmtBitBlt, 7, 0, - kFmtUnused, -1, -1, IS_TERTIARY_OP | REG_DEF0_USE1 | IS_LOAD_OFF | + kFmtUnused, -1, -1, IS_TERTIARY_OP | REG_DEF0_USE1 | IS_LOAD_OFF4 | REG_DEF_LR | NEEDS_FIXUP, "vldr", "!0S, [!1C, #!2E]", 4, kFixupVLoad), ENCODING_MAP(kThumb2Vmuls, 0xee200a00, kFmtSfp, 22, 12, kFmtSfp, 7, 16, kFmtSfp, 5, 0, diff --git a/compiler/optimizing/find_loops_test.cc b/compiler/optimizing/find_loops_test.cc index fab9f7a5ec..c36b1436d3 100644 --- a/compiler/optimizing/find_loops_test.cc +++ b/compiler/optimizing/find_loops_test.cc @@ -27,9 +27,8 @@ namespace art { -static HGraph* TestCode(const uint16_t* data, ArenaPool* pool) { - ArenaAllocator allocator(pool); - HGraphBuilder builder(&allocator); +static HGraph* TestCode(const uint16_t* data, ArenaAllocator* allocator) { + HGraphBuilder builder(allocator); const DexFile::CodeItem* item = reinterpret_cast<const DexFile::CodeItem*>(data); HGraph* graph = builder.BuildGraph(*item); graph->BuildDominatorTree(); @@ -44,7 +43,8 @@ TEST(FindLoopsTest, CFG1) { Instruction::RETURN_VOID); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); for (size_t i = 0, e = graph->GetBlocks().Size(); i < e; ++i) { ASSERT_EQ(graph->GetBlocks().Get(i)->GetLoopInformation(), nullptr); } @@ -56,7 +56,8 @@ TEST(FindLoopsTest, CFG2) { Instruction::RETURN); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); for (size_t i = 0, e = graph->GetBlocks().Size(); i < e; ++i) { ASSERT_EQ(graph->GetBlocks().Get(i)->GetLoopInformation(), nullptr); } @@ -71,7 +72,8 @@ TEST(FindLoopsTest, CFG3) { Instruction::RETURN); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); for (size_t i = 0, e = graph->GetBlocks().Size(); i < e; ++i) { ASSERT_EQ(graph->GetBlocks().Get(i)->GetLoopInformation(), nullptr); } @@ -87,7 +89,8 @@ TEST(FindLoopsTest, CFG4) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); for (size_t i = 0, e = graph->GetBlocks().Size(); i < e; ++i) { ASSERT_EQ(graph->GetBlocks().Get(i)->GetLoopInformation(), nullptr); } @@ -101,7 +104,8 @@ TEST(FindLoopsTest, CFG5) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); for (size_t i = 0, e = graph->GetBlocks().Size(); i < e; ++i) { ASSERT_EQ(graph->GetBlocks().Get(i)->GetLoopInformation(), nullptr); } @@ -146,7 +150,8 @@ TEST(FindLoopsTest, Loop1) { Instruction::RETURN_VOID); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header @@ -173,7 +178,8 @@ TEST(FindLoopsTest, Loop2) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // goto block @@ -197,7 +203,8 @@ TEST(FindLoopsTest, Loop3) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // goto block @@ -222,7 +229,8 @@ TEST(FindLoopsTest, Loop4) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header @@ -248,7 +256,8 @@ TEST(FindLoopsTest, Loop5) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header @@ -271,9 +280,9 @@ TEST(FindLoopsTest, InnerLoop) { Instruction::GOTO | 0xFB00, Instruction::RETURN | 0 << 8); - ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header of outer loop @@ -302,9 +311,9 @@ TEST(FindLoopsTest, TwoLoops) { Instruction::GOTO | 0xFE00, // second loop Instruction::RETURN | 0 << 8); - ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header of first loop @@ -333,7 +342,8 @@ TEST(FindLoopsTest, NonNaturalLoop) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); ASSERT_TRUE(graph->GetBlocks().Get(3)->IsLoopHeader()); HLoopInformation* info = graph->GetBlocks().Get(3)->GetLoopInformation(); ASSERT_FALSE(info->GetHeader()->Dominates(info->GetBackEdges().Get(0))); @@ -347,7 +357,8 @@ TEST(FindLoopsTest, DoWhileLoop) { Instruction::RETURN | 0 << 8); ArenaPool arena; - HGraph* graph = TestCode(data, &arena); + ArenaAllocator allocator(&arena); + HGraph* graph = TestCode(data, &allocator); TestBlock(graph, 0, false, -1); // entry block TestBlock(graph, 1, false, -1); // pre header of first loop |