From b59f51486393b2fae7b0015bc5099c5514c7335a Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Fri, 13 Jun 2025 15:42:08 -0700 Subject: Chapter 24b: SCCP Across Functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tamás Hadházy <85063808+Hels15@users.noreply.github.com> Co-authored-by: Hsiang-Ying Fu <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: fuhsnn <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: Symious <14933944+symious@users.noreply.github.com> Co-authored-by: Jun Kawasaki Co-authored-by: Hadházy Tamás Co-authored-by: Claude Opus 5 --- src/test/java/com/seaofnodes/simple/SccpTest.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'src/test/java/com/seaofnodes/simple/SccpTest.java') diff --git a/src/test/java/com/seaofnodes/simple/SccpTest.java b/src/test/java/com/seaofnodes/simple/SccpTest.java index afa0ec58..cad1b7de 100644 --- a/src/test/java/com/seaofnodes/simple/SccpTest.java +++ b/src/test/java/com/seaofnodes/simple/SccpTest.java @@ -7,25 +7,17 @@ import org.junit.Test; import static org.junit.Assert.*; public class SccpTest { - @Test public void testLoopFixedPoint() { - var code = new CodeGen("int x=1; while(arg) { x=2-x; arg--; } return x;").parse().iter(); - assertFalse(code.link(code._main).ret().expr()._type.isConstant()); - code.opto(); - assertSame(TypeInteger.TRUE,code.link(code._main).ret().expr()._type); - code.driver(CodeGen.Phase.LocalSched); - assertEquals("1",Eval2.eval(code,4)); - } - - @Test public void testConservativeCalls() { + @Test public void testCallArgumentFlow() { var code = new CodeGen("val f={ int x -> x+1; }; return f(1)+f(2);").parse().iter().opto(); int[] parms = {0}; code._start.walk(n -> { if( n instanceof ParmNode p && "x".equals(p._label) ) { parms[0]++; - assertSame(TypeInteger.BOT,p._type); - assertTrue(p.fun().in(1) instanceof StartNode); + TypeInteger t = (TypeInteger)p._type; + assertEquals(1,t._min); + assertEquals(2,t._max); + assertFalse(p.fun().in(1) instanceof StartNode); } - if( n instanceof CallEndNode cend ) assertEquals(1,cend.nIns()); return null; }); assertEquals(1,parms[0]); -- cgit v1.2.3