CoreUtils (PprCore.pprCoreExpr, CoreFVs.exprFreeVars,
CoreSyn.isEvaldUnfolding CoreSyn.maybeUnfoldingTemplate)
then
+ CoreLint( CoreUtils )
OccurAnal (CoreUtils.exprIsTrivial)
then
CoreUnfold (OccurAnal.occurAnalyseGlobalExpr)
MkId (CoreUnfold.mkUnfolding, Subst, Rule.addRule)
then
PrelInfo (MkId)
+ HscTypes( Rules.RuleBase )
module CoreLint (
lintCoreBindings,
lintUnfolding,
- showPass, endPass, endPassWithRules
+ showPass, endPass
) where
#include "HsVersions.h"
import IO ( hPutStr, hPutStrLn, stdout )
import CoreSyn
-import Rules ( RuleBase, pprRuleBase )
import CoreFVs ( idFreeVars )
import CoreUtils ( findDefault, exprOkForSpeculation, coreBindsSize, mkPiType )
%************************************************************************
%* *
-\subsection{Start and end pass}
+\subsection{End pass}
%* *
%************************************************************************
-@beginPass@ and @endPass@ don't really belong here, but it makes a convenient
+@showPass@ and @endPass@ don't really belong here, but it makes a convenient
place for them. They print out stuff before and after core passes,
and do Core Lint when necessary.
\begin{code}
endPass :: DynFlags -> String -> DynFlag -> [CoreBind] -> IO [CoreBind]
endPass dflags pass_name dump_flag binds
- = do
- (binds, _) <- endPassWithRules dflags pass_name dump_flag binds Nothing
- return binds
-
-endPassWithRules :: DynFlags -> String -> DynFlag -> [CoreBind]
- -> Maybe RuleBase
- -> IO ([CoreBind], Maybe RuleBase)
-endPassWithRules dflags pass_name dump_flag binds rules
= do
- -- ToDo: force the rules?
-
-- Report result size if required
-- This has the side effect of forcing the intermediate to be evaluated
if verbosity dflags >= 2 then
return ()
-- Report verbosely, if required
- dumpIfSet_core dflags dump_flag pass_name
- (pprCoreBindings binds $$ case rules of
- Nothing -> empty
- Just rb -> pprRuleBase rb)
+ dumpIfSet_core dflags dump_flag pass_name (pprCoreBindings binds)
-- Type check
lintCoreBindings dflags pass_name binds
- -- ToDo: lint the rules
- return (binds, rules)
+ return binds
\end{code}