Commit 605af54a authored by Simon Peyton Jones's avatar Simon Peyton Jones
Browse files

Test Trac #12776

parent 52388421
{-# OPTIONS_GHC -O2 #-}
-- This made the simplifier loop doing infinite inlining
-- in GHC 8.0
module T12776(distinct_degree_factorization_i) where
import Prelude ((==), Eq);
data Slist a = Nil_s | Cons_s a (Slist a) deriving Eq;
map_s :: (a -> b) -> Slist a -> Slist b;
map_s f (Cons_s x21 x22) = Cons_s (f x21) (map_s f x22);
normalize_poly_i :: (Eq a) => (a -> a) -> Slist a -> Slist a;
normalize_poly_i ops xs = if ops (lead_coeff_i xs) == lead_coeff_i xs then Nil_s else map_s ops xs;
mod_poly_one_main_i :: (Eq a) => (a -> a) -> Slist a -> Slist a;
mod_poly_one_main_i ops d =
if d == d then d else mod_poly_one_main_i ops (normalize_poly_i ops d);
last_s :: (Eq a) => Slist a -> a;
last_s (Cons_s x xs) = (if xs == Nil_s then x else last_s xs);
mod_field_poly_i :: (Eq a) => (a -> a) -> Slist a -> Slist a;
mod_field_poly_i ops cf =
(if cf == cf then cf else
mod_poly_one_main_i ops (map_s (\_ -> ops (last_s cf)) cf));
lead_coeff_i :: Eq a => Slist a -> a;
lead_coeff_i pp = (case pp of {
Cons_s _ _ -> last_s pp;
});
dist_degree_factorize_main_i :: Eq a => (a -> a) -> Slist a -> [Slist a] -> [Slist a];
dist_degree_factorize_main_i ff_ops w res =
if w == w then res
else dist_degree_factorize_main_i ff_ops (mod_field_poly_i ff_ops w)
[normalize_poly_i ff_ops (mod_field_poly_i ff_ops w)];
distinct_degree_factorization_i :: Eq a => (a -> a) -> [Slist a];
distinct_degree_factorization_i ff_ops = dist_degree_factorize_main_i ff_ops Nil_s []
......@@ -245,3 +245,4 @@ test('T12212', normal, compile, ['-O'])
test('noinline01', only_ways(['optasm']), compile, ['-ddump-stg -dsuppress-uniques -O'])
test('par01', only_ways(['optasm']), compile, ['-ddump-prep -dsuppress-uniques -O2'])
test('T12776', normal, compile, ['-O2'])
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment