GHC's inliner -- which does lots of algebraic transformations of the Haskell code to make it fast.
That all happens before getting shunted off to LLVM, which in turn does a lot of block-level changes (which particularly affect numeric code).
That all happens before getting shunted off to LLVM, which in turn does a lot of block-level changes (which particularly affect numeric code).