changeset 19351:78510d27786b

Ensure to also remove redundant PiNodes
author Paul Woegerer <paul.woegerer@oracle.com>
date Fri, 13 Feb 2015 11:54:02 +0100
parents af4a778b3ce6
children dd7d436a7e19
files graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java	Fri Feb 13 11:39:05 2015 +0100
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java	Fri Feb 13 11:54:02 2015 +0100
@@ -113,6 +113,8 @@
     protected void rewriteNode(StructuredGraph graph, Node node) {
         if (node instanceof CheckCastNode) {
             rewriteCheckCast(graph, (CheckCastNode) node);
+        } else if (node instanceof PiNode) {
+            rewritePi(graph, (PiNode) node);
         } else if (node instanceof LoadFieldNode) {
             rewriteLoadField(graph, (LoadFieldNode) node);
         } else if (node instanceof AccessIndexedNode) {
@@ -133,6 +135,16 @@
     }
 
     /**
+     * Remove casts between word types (which by now no longer have kind Object).
+     */
+    protected void rewritePi(StructuredGraph graph, PiNode node) {
+        if (node.getKind() == wordKind) {
+            node.replaceAtUsages(node.object());
+            graph.removeFloating(node);
+        }
+    }
+
+    /**
      * Fold constant field reads, e.g. enum constants.
      */
     protected void rewriteLoadField(StructuredGraph graph, LoadFieldNode node) {