X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FsimplCore%2FSimplUtils.lhs;h=1fdde7f2096e936d22eb18536fbe980efbb197e7;hb=8e3b990169fc33f1924b4e4faa53a5c6fd43268b;hp=45ef88a454698f643af166f03eba408b276606be;hpb=7b144d53463590a536a8ffed36acb093f9dde523;p=ghc-hetmet.git diff --git a/compiler/simplCore/SimplUtils.lhs b/compiler/simplCore/SimplUtils.lhs index 45ef88a..1fdde7f 100644 --- a/compiler/simplCore/SimplUtils.lhs +++ b/compiler/simplCore/SimplUtils.lhs @@ -758,11 +758,11 @@ postInlineUnconditionally env top_lvl bndr occ_info rhs unfolding -- in \y. ....case f of {...} .... -- Here f is used just once, and duplicating the case work is fine (exprIsCheap). -- But --- * We can't preInlineUnconditionally because that woud invalidate --- the occ info for b. --- * We can't postInlineUnconditionally because the RHS is big, and --- that risks exponential behaviour --- * We can't call-site inline, because the rhs is big +-- - We can't preInlineUnconditionally because that woud invalidate +-- the occ info for b. +-- - We can't postInlineUnconditionally because the RHS is big, and +-- that risks exponential behaviour +-- - We can't call-site inline, because the rhs is big -- Alas! where @@ -797,7 +797,7 @@ activeInline env id activeRule :: DynFlags -> SimplEnv -> Maybe (Activation -> Bool) -- Nothing => No rules at all activeRule dflags env - | not (dopt Opt_RewriteRules dflags) + | not (dopt Opt_EnableRewriteRules dflags) = Nothing -- Rewriting is off | otherwise = case getMode env of @@ -1425,6 +1425,11 @@ prepareDefault _ _ case_bndr (Just (tycon, inst_tys)) imposs_cons (Just deflt_rh _ -> return [(DEFAULT, [], deflt_rhs)] + | debugIsOn, isAlgTyCon tycon, [] <- tyConDataCons tycon + = pprTrace "prepareDefault" (ppr case_bndr <+> ppr tycon) + -- This can legitimately happen for type families + $ return [(DEFAULT, [], deflt_rhs)] + --------- Catch-all cases ----------- prepareDefault _dflags _env _case_bndr _bndr_ty _imposs_cons (Just deflt_rhs) = return [(DEFAULT, [], deflt_rhs)]