From 1426384fc7d0e9947e38ad6d523a5e53c324d710 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 11 Oct 2025 11:48:49 -0700 Subject: Missing dep --- chapter24/src/main/java/com/seaofnodes/simple/node/IfNode.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'chapter24/src/main/java/com/seaofnodes') diff --git a/chapter24/src/main/java/com/seaofnodes/simple/node/IfNode.java b/chapter24/src/main/java/com/seaofnodes/simple/node/IfNode.java index 25d21c98..5d751602 100644 --- a/chapter24/src/main/java/com/seaofnodes/simple/node/IfNode.java +++ b/chapter24/src/main/java/com/seaofnodes/simple/node/IfNode.java @@ -58,11 +58,15 @@ public class IfNode extends CFGNode implements MultiNode { // Hunt up the immediate dominator tree. If we find an identical if // test on either the true or false branch, that side wins. if( !pred()._type.isHighOrConst() ) - for( CFGNode dom = idom(), prior=this; dom!=null; prior = dom, dom = dom.idom() ) + for( CFGNode dom = idom(), prior=this; dom!=null; prior = dom, dom = dom.idom() ) { if( addDep(dom) instanceof IfNode iff && addDep(iff.pred())==pred() && prior instanceof CProjNode prj ) { setDef(1,con( prj._idx==0 ? 1 : 0 )); return this; } + if( dom instanceof RegionNode r ) + for( Node c : r._inputs ) + if( c!= null ) addDep(c); // If region loses input, idom changes + } return null; } -- cgit v1.2.3