opt_UnboxStrictFields,
opt_SimplNoPreInlining,
opt_SimplDoEtaReduction,
- opt_SimplDoCaseElim,
opt_SimplDoLambdaEtaExpansion,
opt_SimplCaseOfCase,
opt_SimplCaseMerge,
-- NoPreInlining is there just to see how bad things
-- get if you don't do it!
opt_SimplDoEtaReduction = lookUp SLIT("-fdo-eta-reduction")
-opt_SimplDoCaseElim = lookUp SLIT("-fdo-case-elim")
opt_SimplDoLambdaEtaExpansion = lookUp SLIT("-fdo-lambda-eta-expansion")
opt_SimplCaseOfCase = lookUp SLIT("-fcase-of-case")
opt_SimplCaseMerge = lookUp SLIT("-fcase-merge")
import CmdLineOpts ( intSwitchSet,
opt_SccProfilingOn, opt_PprStyle_Debug, opt_SimplDoEtaReduction,
opt_SimplNoPreInlining, opt_DictsStrict, opt_SimplPedanticBottoms,
- opt_SimplDoCaseElim,
SimplifierSwitch(..)
)
import SimplMonad
-- other problems
)
- && opt_SimplDoCaseElim
- = -- Get rid of the case altogether
+-- && opt_SimplDoCaseElim
+-- [June 99; don't test this flag. The code generator dies if it sees
+-- case (\x.e) of f -> ...
+-- so better to always do it
+
+= -- Get rid of the case altogether
-- See the extensive notes on case-elimination below
-- Remember to bind the binder though!
tick (CaseElim bndr) `thenSmpl_` (