import CmdLineOpts ( opt_D_dump_stranal, opt_D_dump_simpl_stats, opt_D_verbose_core2core )
import CoreSyn
-import Id ( idType, setIdStrictness, setInlinePragma,
+import Id ( setIdStrictness, setInlinePragma,
idDemandInfo, setIdDemandInfo, isBottomingId,
Id
)
-import IdInfo ( InlinePragInfo(..) )
+import IdInfo ( neverInlinePrag )
import CoreLint ( beginPass, endPass )
-import Type ( splitRepFunTys )
import ErrUtils ( dumpIfSet )
import SaAbsInt
import SaLib
import Demand ( Demand, wwStrict, isStrict, isLazy )
-import UniqSupply ( UniqSupply )
import Util ( zipWith3Equal, stretchZipWith )
import Outputable
\end{code}
in
returnSa (new_str_env, new_abs_env, Rec new_pairs)
+-- Hack alert!
-- Top level divergent bindings are marked NOINLINE
-- This avoids fruitless inlining of top level error functions
addStrictnessInfoToTopId str_val abs_val bndr
= if isBottomingId new_id then
- new_id `setInlinePragma` IMustNotBeINLINEd False Nothing
- -- This is a NOINLINE pragma
+ new_id `setInlinePragma` neverInlinePrag
else
new_id
where