diff options
Diffstat (limited to 'chapter12/src/main/java/com/seaofnodes')
| -rw-r--r-- | chapter12/src/main/java/com/seaofnodes/simple/node/AddNode.java | 1 | ||||
| -rw-r--r-- | chapter12/src/main/java/com/seaofnodes/simple/node/MinusFNode.java | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/AddNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/AddNode.java index 114e62c9..48350957 100644 --- a/chapter12/src/main/java/com/seaofnodes/simple/node/AddNode.java +++ b/chapter12/src/main/java/com/seaofnodes/simple/node/AddNode.java @@ -106,6 +106,7 @@ public class AddNode extends Node { static Node phiCon(Node op, boolean rotate) { Node lhs = op.in(1); Node rhs = op.in(2); + if( rhs._type==TypeInteger.TOP ) return null; // LHS is either a Phi of constants, or another op with Phi of constants PhiNode lphi = pcon(lhs,op); if( rotate && lphi==null && lhs.nIns() > 2 ) { diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/MinusFNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/MinusFNode.java index 0853729d..9727f58b 100644 --- a/chapter12/src/main/java/com/seaofnodes/simple/node/MinusFNode.java +++ b/chapter12/src/main/java/com/seaofnodes/simple/node/MinusFNode.java @@ -22,7 +22,7 @@ public class MinusFNode extends Node { public Type compute() { if (in(1)._type instanceof TypeFloat i0) return i0.isConstant() ? TypeFloat.constant(-i0.value()) : i0; - return TypeFloat.TOP.meet(in(1)._type); + return TypeFloat.BOT; } @Override |
