diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2016-07-21 17:44:25 +0200 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2016-08-25 18:24:43 +0200 |
commit | d6fd2e3787802265586aef7d51db35e66ef2507a (patch) | |
tree | d4c22cd8f8ebef1e2fce38798aefddc8b0e1fadb /testsuite/tests/stranal | |
parent | 8d92b88df7c1c04606c8a9e12c1d4bee65c990e4 (diff) | |
download | haskell-d6fd2e3787802265586aef7d51db35e66ef2507a.tar.gz |
DmdAnal: Testcase about splitFVs and dmdFix abortion
Any variable with useful information (strict or used-once) will not be
included in lazy_fv (according to splitFVs). If we now also remove them
from the strictness signatures, their uses are not recorded anywhere –
and then probably considered absent.
Diffstat (limited to 'testsuite/tests/stranal')
-rw-r--r-- | testsuite/tests/stranal/should_run/T12368a.hs | 27 | ||||
-rw-r--r-- | testsuite/tests/stranal/should_run/T12368a.stderr | 3 |
2 files changed, 30 insertions, 0 deletions
diff --git a/testsuite/tests/stranal/should_run/T12368a.hs b/testsuite/tests/stranal/should_run/T12368a.hs new file mode 100644 index 0000000000..301d044493 --- /dev/null +++ b/testsuite/tests/stranal/should_run/T12368a.hs @@ -0,0 +1,27 @@ +-- Needs to be a product type +data Stream = S Int Stream + +-- a is wrongly recorded abstent if the non-lazy-fv from foo are thrown away. +bar :: Int -> Int -> Stream -> Int +bar a n s = foo n s + where + -- Non terminating local rec, strict in a + foo :: Int -> Stream -> Int + foo 0 (S n s) = a + foo i (S n s) = a `seq` n + foo (i-1) s +{-# NOINLINE bar #-} + + +baz :: Int -> Int -> Int +baz 0 not_absent = 0 +baz 1 not_absent = baz 2 not_absent +baz x not_absent = bar not_absent 1000 arg + where + arg = S 1 arg + +bamf x = baz x (error "This is good!") +{-# NOINLINE bamf #-} + + +main :: IO () +main = bamf 10 `seq` return () diff --git a/testsuite/tests/stranal/should_run/T12368a.stderr b/testsuite/tests/stranal/should_run/T12368a.stderr new file mode 100644 index 0000000000..98246d33d0 --- /dev/null +++ b/testsuite/tests/stranal/should_run/T12368a.stderr @@ -0,0 +1,3 @@ +T12368a: This is good! +CallStack (from HasCallStack): + error, called at T12368a.hs:22:17 in main:Main |