summaryrefslogtreecommitdiff
path: root/chapter10/src/main/java
diff options
context:
space:
mode:
authorRobert Obkircher <robert.obkircher@gmail.com>2024-09-16 14:22:13 +0200
committerCliff Click <cliffc@acm.org>2024-09-16 09:07:32 -0700
commitc7445ad142aeaece5b2b1059c193735ba7e509d9 (patch)
treeaeac3ebcdd1591bd9cab7d110bec6a0e672331cb /chapter10/src/main/java
parentbb3147d5b212d675ca2575ac1b571aaaf478cf5e (diff)
downloadSimple-c7445ad142aeaece5b2b1059c193735ba7e509d9.tar.gz
Simple-c7445ad142aeaece5b2b1059c193735ba7e509d9.zip
remove peephole from ProjNode::idealize that is already handled by compute
Diffstat (limited to 'chapter10/src/main/java')
-rw-r--r--chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java17
1 files changed, 7 insertions, 10 deletions
diff --git a/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index 18526677..735fcdf3 100644
--- a/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -40,17 +40,14 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new ProjNode((MultiNode)new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new ProjNode((MultiNode)new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}