Optimise nullary type constructor usage
During the compilation of programs GHC very frequently deals with
Type type, which is a synonym of
TYPE 'LiftedRep. This patch
teaches GHC to avoid expanding the
Type synonym (and other nullary
type synonyms) during type comparisons, saving a good amount of work.
This optimisation is described in
Note [Comparing nullary type synonyms].
To maximize the impact of this optimisation, we introduce a few
special-cases to reduce
TYPE 'LiftedRep to
Note [Prefer Type over TYPE 'LiftedPtrRep].
Closes #17958 (closed).