Note [The litEq rule: converting equality to case]
This stuff turns
n ==# 3#
into
case n of
3# -> True
m -> False
This is a Good Thing, because it allows case-of case things
to happen, and case-default absorption to happen. For
example:
if (n ==# 3#) || (n ==# 4#) then e1 else e2
will transform to
case n of
3# -> e1
4# -> e1
m -> e2
(modulo the usual precautions to avoid duplicating e1) References 0
This Note does not link to any other.
Referenced by 2
- Rules for floating-point comparisons GHC.Core.Opt.ConstantFold
- exprOkForSpeculation: case expressions GHC.Core.Utils