Note [The litEq rule: converting equality to case]

GHC/Core/Opt/ConstantFold.hs:1328 compiler

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