diff graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScan.java @ 2791:6d14aa4fbf90

Gotos removed (except for exception dispatch chains and edge splitting).
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 25 May 2011 20:03:05 +0200
parents aeccd2af4e9e
children 58e65eb6bb5d
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScan.java	Wed May 25 19:29:40 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScan.java	Wed May 25 20:03:05 2011 +0200
@@ -27,6 +27,7 @@
 
 import java.util.*;
 
+import com.oracle.graal.graph.*;
 import com.sun.c1x.*;
 import com.sun.c1x.alloc.Interval.*;
 import com.sun.c1x.debug.*;
@@ -813,6 +814,7 @@
             }
 
             TTY.println("preds=" + startBlock.blockPredecessors().size() + ", succs=" + startBlock.blockSuccessors().size());
+            TTY.println("startBlock-ID: " + startBlock.blockID());
 
             // bailout of if this occurs in product mode.
             throw new CiBailout("liveIn set of first block must be empty");
@@ -820,6 +822,7 @@
     }
 
     private void reportFailure(int numBlocks) {
+        TTY.println(compilation.method.toString());
         TTY.println("Error: liveIn set of first block must be empty (when this fails, variables are used before they are defined)");
         TTY.print("affected registers:");
         TTY.println(ir.startBlock.liveIn.toString());
@@ -831,6 +834,17 @@
                 Value instr = operand.isVariable() ? gen.operands.instructionForResult(((CiVariable) operand)) : null;
                 TTY.println(" var %d (HIR instruction %s)", operandNum, instr == null ? " " : instr.toString());
 
+                if (instr instanceof Phi) {
+                    Phi phi = (Phi) instr;
+                    TTY.println("phi block begin: " + phi.block());
+                    TTY.println("pred count on blockbegin: " + phi.block().predecessors().size());
+                    TTY.println("phi values: " + phi.valueCount());
+                    TTY.println("phi block preds:");
+                    for (Node n : phi.block().predecessors()) {
+                        TTY.println(n.toString());
+                    }
+                }
+
                 for (int j = 0; j < numBlocks; j++) {
                     LIRBlock block = blockAt(j);
                     if (block.liveGen.get(operandNum)) {