diff options
Diffstat (limited to 'testsuite/tests/simplCore')
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T22428.hs | 9 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T22428.stderr | 45 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/all.T | 4 |
3 files changed, 58 insertions, 0 deletions
diff --git a/testsuite/tests/simplCore/should_compile/T22428.hs b/testsuite/tests/simplCore/should_compile/T22428.hs new file mode 100644 index 0000000000..02cccb7f3a --- /dev/null +++ b/testsuite/tests/simplCore/should_compile/T22428.hs @@ -0,0 +1,9 @@ +module T22428 where + +f :: Integer -> Integer -> Integer +f x y = go y + where + go :: Integer -> Integer + go 0 = x + go n = go (n-1) + {-# INLINE go #-} diff --git a/testsuite/tests/simplCore/should_compile/T22428.stderr b/testsuite/tests/simplCore/should_compile/T22428.stderr new file mode 100644 index 0000000000..48ea278ae0 --- /dev/null +++ b/testsuite/tests/simplCore/should_compile/T22428.stderr @@ -0,0 +1,45 @@ + +==================== Tidy Core ==================== +Result size of Tidy Core + = {terms: 32, types: 14, coercions: 0, joins: 1/1} + +-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} +T22428.f1 :: Integer +[GblId, + Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, + WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 10}] +T22428.f1 = GHC.Num.Integer.IS 1# + +-- RHS size: {terms: 28, types: 10, coercions: 0, joins: 1/1} +f :: Integer -> Integer -> Integer +[GblId, + Arity=2, + Str=<SL><1L>, + Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, + WorkFree=True, Expandable=True, Guidance=IF_ARGS [0 0] 156 0}] +f = \ (x :: Integer) (y :: Integer) -> + joinrec { + go [InlPrag=INLINE (sat-args=1), Occ=LoopBreaker, Dmd=SC(S,L)] + :: Integer -> Integer + [LclId[JoinId(1)(Just [!])], + Arity=1, + Str=<1L>, + Unf=Unf{Src=StableUser, TopLvl=False, Value=True, ConLike=True, + WorkFree=True, Expandable=True, + Guidance=ALWAYS_IF(arity=1,unsat_ok=False,boring_ok=False)}] + go (ds :: Integer) + = case ds of wild { + GHC.Num.Integer.IS x1 -> + case x1 of { + __DEFAULT -> jump go (GHC.Num.Integer.integerSub wild T22428.f1); + 0# -> x + }; + GHC.Num.Integer.IP x1 -> + jump go (GHC.Num.Integer.integerSub wild T22428.f1); + GHC.Num.Integer.IN x1 -> + jump go (GHC.Num.Integer.integerSub wild T22428.f1) + }; } in + jump go y + + + diff --git a/testsuite/tests/simplCore/should_compile/all.T b/testsuite/tests/simplCore/should_compile/all.T index 4fd57c5301..1b25c1b00b 100644 --- a/testsuite/tests/simplCore/should_compile/all.T +++ b/testsuite/tests/simplCore/should_compile/all.T @@ -459,6 +459,10 @@ test('T22494', [grep_errmsg(r'case') ], compile, ['-O -ddump-simpl -dsuppress-un test('T22491', normal, compile, ['-O2']) test('T21476', normal, compile, ['']) test('T22272', normal, multimod_compile, ['T22272', '-O -fexpose-all-unfoldings -fno-omit-interface-pragmas -fno-ignore-interface-pragmas']) + +# go should become a join point +test('T22428', [grep_errmsg(r'jump go') ], compile, ['-O -ddump-simpl -dsuppress-uniques -dno-typeable-binds -dsuppress-unfoldings']) + test('T22459', normal, compile, ['']) test('T22623', normal, multimod_compile, ['T22623', '-O -v0']) test('T22662', normal, compile, ['']) |