diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-04-29 16:46:27 +0100 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2015-04-30 11:20:21 +0100 |
commit | 781733632637db98d79dfffad72bf063be3259be (patch) | |
tree | a4ea455e89adb9db77e25525a81737f3b0ab0c58 /compiler/optimizing/gvn_test.cc | |
parent | 36ad3f1c3c08a49680a8f5d34bba43199ab9dd5b (diff) | |
download | art-781733632637db98d79dfffad72bf063be3259be.zip art-781733632637db98d79dfffad72bf063be3259be.tar.gz art-781733632637db98d79dfffad72bf063be3259be.tar.bz2 |
GVN final fields even with side effects.
Two accesses of a final field can be GVN'ed even if there are
side effects between them.
Change-Id: I04495ae83c7858f4216b083ad1c29851954320ad
Diffstat (limited to 'compiler/optimizing/gvn_test.cc')
-rw-r--r-- | compiler/optimizing/gvn_test.cc | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/compiler/optimizing/gvn_test.cc b/compiler/optimizing/gvn_test.cc index a81d49a..59854d7 100644 --- a/compiler/optimizing/gvn_test.cc +++ b/compiler/optimizing/gvn_test.cc @@ -42,21 +42,21 @@ TEST(GVNTest, LocalFieldElimination) { block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimNot, - MemberOffset(42), false)); + MemberOffset(42), false, false)); block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimNot, - MemberOffset(42), false)); + MemberOffset(42), false, false)); HInstruction* to_remove = block->GetLastInstruction(); block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimNot, - MemberOffset(43), false)); + MemberOffset(43), false, false)); HInstruction* different_offset = block->GetLastInstruction(); // Kill the value. block->AddInstruction(new (&allocator) HInstanceFieldSet( parameter, parameter, Primitive::kPrimNot, MemberOffset(42), false)); block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimNot, - MemberOffset(42), false)); + MemberOffset(42), false, false)); HInstruction* use_after_kill = block->GetLastInstruction(); block->AddInstruction(new (&allocator) HExit()); @@ -90,7 +90,7 @@ TEST(GVNTest, GlobalFieldElimination) { entry->AddSuccessor(block); block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); block->AddInstruction(new (&allocator) HIf(block->GetLastInstruction())); HBasicBlock* then = new (&allocator) HBasicBlock(graph); @@ -107,15 +107,15 @@ TEST(GVNTest, GlobalFieldElimination) { then->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); then->AddInstruction(new (&allocator) HGoto()); else_->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); else_->AddInstruction(new (&allocator) HGoto()); join->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); join->AddInstruction(new (&allocator) HExit()); graph->TryBuildingSsa(); @@ -146,7 +146,7 @@ TEST(GVNTest, LoopFieldElimination) { entry->AddSuccessor(block); block->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); block->AddInstruction(new (&allocator) HGoto()); HBasicBlock* loop_header = new (&allocator) HBasicBlock(graph); @@ -163,7 +163,7 @@ TEST(GVNTest, LoopFieldElimination) { loop_header->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); HInstruction* field_get_in_loop_header = loop_header->GetLastInstruction(); loop_header->AddInstruction(new (&allocator) HIf(block->GetLastInstruction())); @@ -174,13 +174,13 @@ TEST(GVNTest, LoopFieldElimination) { HInstruction* field_set = loop_body->GetLastInstruction(); loop_body->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); HInstruction* field_get_in_loop_body = loop_body->GetLastInstruction(); loop_body->AddInstruction(new (&allocator) HGoto()); exit->AddInstruction( new (&allocator) HInstanceFieldGet(parameter, Primitive::kPrimBoolean, - MemberOffset(42), false)); + MemberOffset(42), false, false)); HInstruction* field_get_in_exit = exit->GetLastInstruction(); exit->AddInstruction(new (&allocator) HExit()); |