summaryrefslogtreecommitdiff
path: root/src/test/java/com/seaofnodes/simple/SccpTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/seaofnodes/simple/SccpTest.java')
-rw-r--r--src/test/java/com/seaofnodes/simple/SccpTest.java18
1 files changed, 5 insertions, 13 deletions
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]);