changeset 17037:ff0ec169843b

Fixed loop phis with itself as single back value did not canonicalize. (contributed by Lukas Stadler)
author Christian Humer <christian.humer@gmail.com>
date Wed, 03 Sep 2014 14:58:53 +0200
parents 7b45e33b7986
children 3b3e768a2b92
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Wed Sep 03 14:58:53 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Wed Sep 03 14:58:53 2014 +0200
@@ -193,7 +193,13 @@
 
     @Override
     public void simplify(SimplifierTool tool) {
-        ValueNode singleValue = singleValue();
+        ValueNode singleValue;
+
+        if (isLoopPhi() && singleBackValue() == this) {
+            singleValue = firstValue();
+        } else {
+            singleValue = singleValue();
+        }
 
         if (singleValue != MULTIPLE_VALUES) {
             for (Node node : usages().snapshot()) {