changeset 3806:0919b2e7895d

7174510: 19 JCK compiler tests fail with C2 error: memNode.cpp:812 - ShouldNotReachHere Summary: Add missing check for EncodeP node in MemNode::Ideal_common_DU_postCCP() method. Reviewed-by: twisti
author kvn
date Mon, 11 Jun 2012 14:58:51 -0700
parents 829ee34e7cbd
children d5dded5d1e0d
files src/share/vm/opto/memnode.cpp
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp	Mon Jun 11 08:35:28 2012 -0700
+++ b/src/share/vm/opto/memnode.cpp	Mon Jun 11 14:58:51 2012 -0700
@@ -717,6 +717,22 @@
         adr = adr->in(1);
         continue;
 
+      case Op_EncodeP:
+        // EncodeP node's control edge could be set by this method
+        // when EncodeP node depends on CastPP node.
+        //
+        // Use its control edge for memory op because EncodeP may go away
+        // later when it is folded with following or preceding DecodeN node.
+        if (adr->in(0) == NULL) {
+          // Keep looking for cast nodes.
+          adr = adr->in(1);
+          continue;
+        }
+        ccp->hash_delete(n);
+        n->set_req(MemNode::Control, adr->in(0));
+        ccp->hash_insert(n);
+        return n;
+
       case Op_CastPP:
         // If the CastPP is useless, just peek on through it.
         if( ccp->type(adr) == ccp->type(adr->in(1)) ) {