changeset 21442:607ddc0b8d21

NodeLIRBuilder#createPhiOut: do not put fixed registers into phiOuts.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 18 May 2015 14:48:02 +0200
parents 1fc2966023e1
children 4563ed9308c0
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon May 18 14:40:32 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon May 18 14:48:02 2015 +0200
@@ -239,6 +239,13 @@
         for (PhiNode phi : merge.valuePhis()) {
             Value value = operand(phi.valueAt(pred));
             assert value != null;
+            if (isRegister(value)) {
+                /*
+                 * Fixed register intervals are not allowed at block boundaries so we introduce a
+                 * new Variable.
+                 */
+                value = gen.emitMove(value);
+            }
             values.add(value);
         }
         return values.toArray(new Value[values.size()]);