summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/gvn_test.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-04-29 16:46:27 +0100
committerNicolas Geoffray <ngeoffray@google.com>2015-04-30 11:20:21 +0100
commit781733632637db98d79dfffad72bf063be3259be (patch)
treea4ea455e89adb9db77e25525a81737f3b0ab0c58 /compiler/optimizing/gvn_test.cc
parent36ad3f1c3c08a49680a8f5d34bba43199ab9dd5b (diff)
downloadart-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.cc24
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());