diff graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java @ 2869:fc75fd3fa5e4

merge (inlining broken)
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 07 Jun 2011 19:21:23 +0200
parents 5c545fef2c81 45422967cbcf
children
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java	Tue Jun 07 19:19:14 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java	Tue Jun 07 19:21:23 2011 +0200
@@ -417,7 +417,7 @@
     }
 
     @Override
-    public void visitMaterialize(Materialize x) {
+    public void visitMaterialize(NormalizeCompare x) {
         LIRItem left = new LIRItem(x.x(), this);
         LIRItem right = new LIRItem(x.y(), this);
         if (!x.kind.isVoid() && x.x().kind.isLong()) {
@@ -472,12 +472,12 @@
 
     @Override
     public void visitIf(If x) {
-        CiKind kind = x.x().kind;
+        CiKind kind = x.compare().x().kind;
 
-        Condition cond = x.condition();
+        Condition cond = x.compare().condition();
 
-        LIRItem xitem = new LIRItem(x.x(), this);
-        LIRItem yitem = new LIRItem(x.y(), this);
+        LIRItem xitem = new LIRItem(x.compare().x(), this);
+        LIRItem yitem = new LIRItem(x.compare().y(), this);
         LIRItem xin = xitem;
         LIRItem yin = yitem;
 
@@ -504,8 +504,12 @@
         CiValue left = xin.result();
         CiValue right = yin.result();
         lir.cmp(cond, left, right);
-        if (x.x().kind.isFloat() || x.x().kind.isDouble()) {
-            lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor()), getLIRBlock(x.unorderedSuccessor()));
+        if (x.compare().x().kind.isFloat() || x.compare().x().kind.isDouble()) {
+            Instruction unorderedSucc = x.falseSuccessor();
+            if (x.compare().unorderedIsTrue()) {
+                unorderedSucc = x.trueSuccessor();
+            }
+            lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor()), getLIRBlock(unorderedSucc));
         } else {
             lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor()));
         }