\section[MagicUFs]{Magic unfoldings that the simplifier knows about}
\begin{code}
-#include "HsVersions.h"
-
module MagicUFs (
MagicUnfoldingFun, -- absolutely abstract
applyMagicUnfoldingFun
) where
-IMP_Ubiq(){-uitous-}
-IMPORT_DELOOPER(IdLoop) -- paranoia checking
+#include "HsVersions.h"
+import Id ( addInlinePragma )
import CoreSyn
import SimplEnv ( SimplEnv )
-import SimplMonad ( SYN_IE(SmplM), SimplCount )
+import SimplMonad ( SmplM, SimplCount )
import Type ( mkFunTys )
import TysWiredIn ( mkListTy )
import Unique ( Unique{-instances-} )
t] ->
let
- c = addIdUnfolding pre_c (iWantToBeINLINEd UnfoldAlways)
+ c = addInlinePragma pre_c
c_rhs = Lam b (Lam g' (Lam a
(Let (NonRec t (App (App (argToExpr arg_k) (VarArg a)) (VarArg b)))
(App (Var g') (VarArg t)))))
- n = addIdUnfolding pre_n (iWantToBeINLINEd UnfoldAlways)
+ n = addInlinePragma pre_n
n_rhs = Lam a' (Var a')
in
returnSmpl (Let (NonRec c c_rhs) $
t] ->
let
- c = addIdUnfolding pre_c (iWantToBeINLINEd UnfoldAlways)
+ c = addInlinePragma pre_c
c_rhs = Lam b (Lam g_ (Lam a
(Let (NonRec t (App (App (argToExpr arg_k) (VarArg a)) (VarArg b)))
(App (Var g_) (VarArg t)))))
- n = addIdUnfolding pre_n (iWantToBeINLINEd UnfoldAlways)
+ n = addInlinePragma pre_n
n_rhs = Lam a' (Var a')
- r = addIdUnfolding pre_r (iWantToBeINLINEd UnfoldAlways)
+ r = addInlinePragma pre_r
r_rhs = mkGenApp (Var foldrId)
[TypeArg ty2,TypeArg (mkFunTys [ty1] ty1),
ValArg (VarArg c),