Mark PrimOp arguments as lazy. This stops the simplifier throwing
away cases, and is consistent with the way applications work. We
could probably do better by using the information from
primOpStrictness.
-- arguments are just variables, or trivial expressions.
final_arg_uds = case con of
DataCon _ -> mapVarEnv markMany arg_uds
+ PrimOp _ -> mapVarEnv markLazy arg_uds
other -> arg_uds
in
(final_arg_uds, Con con args')