opt_PprCols,
opt_PprCaseAsLet,
opt_PprStyle_Debug, opt_TraceLevel,
- opt_NoDebugOutput,
+ opt_NoDebugOutput,
-- Suppressing boring aspects of core dumps
opt_SuppressAll,
opt_CprOff,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
+ opt_NoOptCoercion,
opt_MaxWorkerArgs,
-- Unfolding control
opt_NoDebugOutput :: Bool
opt_NoDebugOutput = lookUp (fsLit "-dno-debug-output")
-
-- profiling opts
opt_SccProfilingOn :: Bool
opt_SccProfilingOn = lookUp (fsLit "-fscc-profiling")
opt_SimplExcessPrecision :: Bool
opt_SimplExcessPrecision = lookUp (fsLit "-fexcess-precision")
+opt_NoOptCoercion :: Bool
+opt_NoOptCoercion = lookUp (fsLit "-fno-opt-coercion")
+
-- Unfolding control
-- See Note [Discounts and thresholds] in CoreUnfold
import VarSet\r
import VarEnv\r
import PrelNames\r
+import StaticFlags ( opt_NoOptCoercion )\r
import Util\r
import Outputable\r
\end{code}\r
optCoercion :: TvSubst -> Coercion -> NormalCo\r
-- ^ optCoercion applies a substitution to a coercion, \r
-- *and* optimises it to reduce its size\r
-optCoercion env co = opt_co env False co\r
+optCoercion env co \r
+ | opt_NoOptCoercion = substTy env co\r
+ | otherwise = opt_co env False co\r
\r
type NormalCo = Coercion\r
-- Invariants: \r
</row>
<row>
+ <entry><option>-fno-opt-coercion</option></entry>
+ <entry>Turn off the coercion optimiser</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+
+ <row>
<entry><option>-feager-blackholing</option></entry>
<entry>Turn on <link linkend="parallel-compile-options">eager blackholing</link></entry>
<entry>dynamic</entry>