[commit: ghc] wip/nested-cpr: CPR test case: Case binder CPR (c66641d)

git at git.haskell.org git at git.haskell.org
Wed Jan 15 18:07:31 UTC 2014


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nested-cpr
Link       : http://ghc.haskell.org/trac/ghc/changeset/c66641de3fdfcd8946e6f8a3cdfb0abe4923dcca/ghc

>---------------------------------------------------------------

commit c66641de3fdfcd8946e6f8a3cdfb0abe4923dcca
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Tue Jan 14 09:36:34 2014 +0000

    CPR test case: Case binder CPR


>---------------------------------------------------------------

c66641de3fdfcd8946e6f8a3cdfb0abe4923dcca
 testsuite/tests/stranal/sigs/CaseBinderCPR.hs           |   15 +++++++++++++++
 .../sigs/{FacState.stderr => CaseBinderCPR.stderr}      |    2 +-
 testsuite/tests/stranal/sigs/all.T                      |    1 +
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/testsuite/tests/stranal/sigs/CaseBinderCPR.hs b/testsuite/tests/stranal/sigs/CaseBinderCPR.hs
new file mode 100644
index 0000000..13f2163
--- /dev/null
+++ b/testsuite/tests/stranal/sigs/CaseBinderCPR.hs
@@ -0,0 +1,15 @@
+module CaseBinderCPR where
+
+-- This example, taken from nofib's transform (and heavily reduced) ensures that
+-- CPR information is added to a case binder
+
+f_list_cmp::(t1 -> t1 -> Int) -> [t1] -> [t1] -> Int;
+f_list_cmp a_cmp [] []= 0
+f_list_cmp a_cmp [] a_ys= -1
+f_list_cmp a_cmp a_xs []= 1
+f_list_cmp a_cmp (a_x:a_xs) (a_y:a_ys)=
+    if r_order == 0
+    then f_list_cmp a_cmp a_xs a_ys
+    else r_order
+  where
+    r_order = a_cmp a_x a_y
diff --git a/testsuite/tests/stranal/sigs/FacState.stderr b/testsuite/tests/stranal/sigs/CaseBinderCPR.stderr
similarity index 53%
copy from testsuite/tests/stranal/sigs/FacState.stderr
copy to testsuite/tests/stranal/sigs/CaseBinderCPR.stderr
index 133ad6e..f2ea61d 100644
--- a/testsuite/tests/stranal/sigs/FacState.stderr
+++ b/testsuite/tests/stranal/sigs/CaseBinderCPR.stderr
@@ -1,5 +1,5 @@
 
 ==================== Strictness signatures ====================
-FacState.fac: <S,1*U(U)><L,U>dm1(d,tm1(d))
+CaseBinderCPR.f_list_cmp: <L,C(C1(U(U)))><S,1*U><S,1*U>m()
 
 
diff --git a/testsuite/tests/stranal/sigs/all.T b/testsuite/tests/stranal/sigs/all.T
index 3657432..3e271c5 100644
--- a/testsuite/tests/stranal/sigs/all.T
+++ b/testsuite/tests/stranal/sigs/all.T
@@ -13,3 +13,4 @@ test('HyperStrUse', normal, compile, [''])
 test('T8598', normal, compile, [''])
 test('FacState', expect_broken(1600), compile, [''])
 test('UnsatFun', normal, compile, [''])
+test('CaseBinderCPR', normal, compile, [''])



More information about the ghc-commits mailing list