diff options
| author | Cliff Click <cliffc@acm.org> | 2025-04-26 13:39:40 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-04-26 13:39:40 -0700 |
| commit | 033c08926a5d597058fff0e8fd605bcd238d36a0 (patch) | |
| tree | 13c0ea350579ae07ee2886a8dc4fc1adbcba07e1 /chapter22/src/main/java/com/seaofnodes | |
| parent | 2fbd5e92114b10cb6e475d82a850f899efbf9f27 (diff) | |
| download | Simple-033c08926a5d597058fff0e8fd605bcd238d36a0.tar.gz Simple-033c08926a5d597058fff0e8fd605bcd238d36a0.zip | |
A series of unrelated minor bugfixes
Diffstat (limited to 'chapter22/src/main/java/com/seaofnodes')
4 files changed, 3 insertions, 4 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/codegen/CodeGen.java b/chapter22/src/main/java/com/seaofnodes/simple/codegen/CodeGen.java index 86cbfe97..bf6d67b0 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/codegen/CodeGen.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/codegen/CodeGen.java @@ -300,8 +300,6 @@ public class CodeGen { if( x instanceof MachNode mach ) mach.postSelect(this); // Post selection action - // Updates forward edges only. - n._outputs.clear(); return x; } diff --git a/chapter22/src/main/java/com/seaofnodes/simple/node/CallEndNode.java b/chapter22/src/main/java/com/seaofnodes/simple/node/CallEndNode.java index 47975833..e1d8aee5 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/node/CallEndNode.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/node/CallEndNode.java @@ -37,7 +37,6 @@ public class CallEndNode extends CFGNode implements MultiNode { if( !(in(0) instanceof CallNode call) ) return TypeTuple.RET.dual(); Type ret = Type.BOTTOM; - TypeMem mem = TypeMem.BOT; if( addDep(call.fptr())._type instanceof TypeFunPtr tfp ) { ret = tfp.ret(); // Here, if I can figure out I've found *all* callers, then I can meet diff --git a/chapter22/src/main/java/com/seaofnodes/simple/node/PhiNode.java b/chapter22/src/main/java/com/seaofnodes/simple/node/PhiNode.java index 0579ecd0..e6f9cae7 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/node/PhiNode.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/node/PhiNode.java @@ -127,6 +127,9 @@ public class PhiNode extends Node { addDep(out); return false; } + for( int j=1; j<in(1).nIns(); j++ ) + if( op.in(j) instanceof ScopeNode || (op.in(j)==null && in(1).in(j)!=null) ) + return false; // Lazy Phi input } return true; } diff --git a/chapter22/src/main/java/com/seaofnodes/simple/node/ReturnNode.java b/chapter22/src/main/java/com/seaofnodes/simple/node/ReturnNode.java index 317f4ce8..b4173871 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/node/ReturnNode.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/node/ReturnNode.java @@ -51,7 +51,6 @@ public class ReturnNode extends CFGNode { @Override public Type compute() { if( inProgress () ) return TypeTuple.RET; // In progress - if( _fun.isDead() ) return TypeTuple.RET.dual(); // Dead another way return TypeTuple.make(ctrl()._type,mem()._type,expr()._type); } |
