8204348: AArch64: Remove C2 address reshaping code
authoraph
Tue, 05 Jun 2018 17:50:31 +0100
changeset 50426 4e47a0f6d688
parent 50412 3d658c910e83
child 50427 b06f330492cd
8204348: AArch64: Remove C2 address reshaping code Reviewed-by: kvn
src/hotspot/cpu/aarch64/aarch64.ad
--- a/src/hotspot/cpu/aarch64/aarch64.ad	Tue Jun 05 17:14:49 2018 +0100
+++ b/src/hotspot/cpu/aarch64/aarch64.ad	Tue Jun 05 17:50:31 2018 +0100
@@ -3792,69 +3792,7 @@
   return false;
 }
 
-// Transform:
-// (AddP base (AddP base address (LShiftL index con)) offset)
-// into:
-// (AddP base (AddP base offset) (LShiftL index con))
-// to take full advantage of ARM's addressing modes
 void Compile::reshape_address(AddPNode* addp) {
-  Node *addr = addp->in(AddPNode::Address);
-  if (addr->is_AddP() && addr->in(AddPNode::Base) == addp->in(AddPNode::Base)) {
-    const AddPNode *addp2 = addr->as_AddP();
-    if ((addp2->in(AddPNode::Offset)->Opcode() == Op_LShiftL &&
-         addp2->in(AddPNode::Offset)->in(2)->is_Con() &&
-         size_fits_all_mem_uses(addp, addp2->in(AddPNode::Offset)->in(2)->get_int())) ||
-        addp2->in(AddPNode::Offset)->Opcode() == Op_ConvI2L) {
-
-      // Any use that can't embed the address computation?
-      for (DUIterator_Fast imax, i = addp->fast_outs(imax); i < imax; i++) {
-        Node* u = addp->fast_out(i);
-        if (!u->is_Mem()) {
-          return;
-        }
-        if (u->is_LoadVector() || u->is_StoreVector() || u->Opcode() == Op_StoreCM) {
-          return;
-        }
-        if (addp2->in(AddPNode::Offset)->Opcode() != Op_ConvI2L) {
-          int scale = 1 << addp2->in(AddPNode::Offset)->in(2)->get_int();
-          if (VM_Version::expensive_load(u->as_Mem()->memory_size(), scale)) {
-            return;
-          }
-        }
-      }
-
-      Node* off = addp->in(AddPNode::Offset);
-      Node* addr2 = addp2->in(AddPNode::Address);
-      Node* base = addp->in(AddPNode::Base);
-
-      Node* new_addr = NULL;
-      // Check whether the graph already has the new AddP we need
-      // before we create one (no GVN available here).
-      for (DUIterator_Fast imax, i = addr2->fast_outs(imax); i < imax; i++) {
-        Node* u = addr2->fast_out(i);
-        if (u->is_AddP() &&
-            u->in(AddPNode::Base) == base &&
-            u->in(AddPNode::Address) == addr2 &&
-            u->in(AddPNode::Offset) == off) {
-          new_addr = u;
-          break;
-        }
-      }
-
-      if (new_addr == NULL) {
-        new_addr = new AddPNode(base, addr2, off);
-      }
-      Node* new_off = addp2->in(AddPNode::Offset);
-      addp->set_req(AddPNode::Address, new_addr);
-      if (addr->outcnt() == 0) {
-        addr->disconnect_inputs(NULL, this);
-      }
-      addp->set_req(AddPNode::Offset, new_off);
-      if (off->outcnt() == 0) {
-        off->disconnect_inputs(NULL, this);
-      }
-    }
-  }
 }
 
 // helper for encoding java_to_runtime calls on sim