Skip to content

dictionaries in GHC.Float not being inlined

Some dictionaries exported by GHC.Float are not inlined, because they are being marked as loop breakers, e.g. GHC.Float.$f4. This makes x2n1 in nofib much slower, and possibly others.

One reason this happens is that constructor applications are beaten by (a) inline candidates and (b) bindings with RULES in OccurAnal.score.

Simon & I addressed (a) by changing it so that normal inline candidates are now scored lower than constructor applications, but wrappers are scored much higher. This unfortunately doesn't fix GHC.Float. If we also make bindings with RULEs score lower than constructor applications, then the compiler goes into a loop when compiling Data.Traversable.

Trac metadata
Trac field Value
Version 6.6.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system Unknown
Architecture Unknown
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information