summaryrefslogtreecommitdiff
path: root/chapter05/src/main/java/com
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2023-10-28 14:23:48 -0700
committerDibyendu Majumdar <dibyendumajumdar@users.noreply.github.com>2023-11-01 18:56:50 +0000
commitd8405f46790d85f5d18f8b04dbd4fd8116af08ea (patch)
treecf194bb164e6b15ae73063eb74ac996c35ef447a /chapter05/src/main/java/com
parent3a5441ce9eac49c3479375c95f2568a4c18e0bf1 (diff)
downloadSimple-d8405f46790d85f5d18f8b04dbd4fd8116af08ea.tar.gz
Simple-d8405f46790d85f5d18f8b04dbd4fd8116af08ea.zip
Dont make redundant phis
Diffstat (limited to 'chapter05/src/main/java/com')
-rw-r--r--chapter05/src/main/java/com/seaofnodes/simple/node/ScopeNode.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/ScopeNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/ScopeNode.java
index 60d2bd43..ba4758e4 100644
--- a/chapter05/src/main/java/com/seaofnodes/simple/node/ScopeNode.java
+++ b/chapter05/src/main/java/com/seaofnodes/simple/node/ScopeNode.java
@@ -116,7 +116,8 @@ public class ScopeNode extends Node {
public RegionNode mergeScopes(ScopeNode that) {
RegionNode r = (RegionNode)ctrl(new RegionNode(ctrl(), that.ctrl()).peephole());
for( int i=1; i<nIns(); i++ )
- set_def(i,new PhiNode(r, in(i), that.in(i)).peephole());
+ if( in(1) != that.in(i) ) // No need for redundant Phis
+ set_def(i,new PhiNode(r, in(i), that.in(i)).peephole());
that.kill(); // Kill merged scope
return r;
}