opt_D_dump_absC,
opt_D_dump_asm,
opt_D_dump_cpranal,
+ opt_D_dump_cse,
opt_D_dump_deriv,
opt_D_dump_ds,
opt_D_dump_flatC,
opt_D_dump_foreign,
opt_D_dump_inlinings,
opt_D_dump_occur_anal,
- opt_D_dump_rdr,
+ opt_D_dump_parsed,
opt_D_dump_realC,
opt_D_dump_rn,
opt_D_dump_rules,
| CoreDoSpecialising
| CoreDoUSPInf
| CoreDoCPResult
+ | CoreCSE
\end{code}
\begin{code}
opt_D_dump_foreign = lookUp SLIT("-ddump-foreign-stubs")
opt_D_dump_inlinings = lookUp SLIT("-ddump-inlinings")
opt_D_dump_occur_anal = lookUp SLIT("-ddump-occur-anal")
-opt_D_dump_rdr = lookUp SLIT("-ddump-rdr")
+opt_D_dump_parsed = lookUp SLIT("-ddump-parsed")
opt_D_dump_realC = lookUp SLIT("-ddump-realC")
opt_D_dump_rn = lookUp SLIT("-ddump-rn")
opt_D_dump_simpl = lookUp SLIT("-ddump-simpl")
opt_D_dump_tc = lookUp SLIT("-ddump-tc")
opt_D_dump_rules = lookUp SLIT("-ddump-rules")
opt_D_dump_usagesp = lookUp SLIT("-ddump-usagesp")
+opt_D_dump_cse = lookUp SLIT("-ddump-cse")
opt_D_dump_worker_wrapper = lookUp SLIT("-ddump-workwrap")
opt_D_show_passes = lookUp SLIT("-dshow-passes")
opt_D_dump_rn_trace = lookUp SLIT("-ddump-rn-trace")
opt_UF_PrimArgDiscount = lookup_def_int "-funfolding-prim-discount" (1::Int)
opt_UF_KeenessFactor = lookup_def_float "-funfolding-keeness-factor" (2.0::Float)
-opt_UF_CheapOp = ( 1 :: Int)
-opt_UF_DearOp = ( 8 :: Int)
+opt_UF_CheapOp = ( 0 :: Int) -- Only one instruction; and the args are charged for
+opt_UF_DearOp = ( 4 :: Int)
opt_UF_NoRepLit = ( 20 :: Int) -- Strings can be pretty big
opt_ProduceS = lookup_str "-S="
"-ffloat-inwards" -> CORE_TD(CoreDoFloatInwards)
"-ffull-laziness" -> CORE_TD(CoreDoFullLaziness)
"-fliberate-case" -> CORE_TD(CoreLiberateCase)
+ "-fcse" -> CORE_TD(CoreCSE)
"-fprint-core" -> CORE_TD(CoreDoPrintCore)
"-fstatic-args" -> CORE_TD(CoreDoStaticArgs)
"-fstrictness" -> CORE_TD(CoreDoStrictness)