Comments only
authorJan Stolarek <jan.stolarek@p.lodz.pl>
Fri, 23 Aug 2013 07:49:28 +0000 (08:49 +0100)
committerJan Stolarek <jan.stolarek@p.lodz.pl>
Fri, 23 Aug 2013 07:49:28 +0000 (08:49 +0100)
Add note for Integre constant folding

libraries/base/GHC/Real.lhs

index 347cfd9..1d53637 100644 (file)
@@ -382,6 +382,18 @@ instance Enum Word where
 instance  Real Integer  where
     toRational x        =  x :% 1
 
+-- Note [Integer division constant folding]
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--
+-- Constant folding of quot, rem, div, mod, divMod and quotRem for
+-- Integer arguments depends crucially on inlining. Constant folding
+-- rules defined in compiler/prelude/PrelRules.lhs trigger for
+-- quotInteger, remInteger and so on. So if calls to quot, rem and so on
+-- were not inlined the rules would not fire. The rules would also not
+-- fire if calls to quotInteger and so on were inlined, but this does not
+-- happen because they are all marked with NOINLINE pragma - see documentation
+-- of integer-gmp or integer-simple.
+
 instance  Integral Integer where
     toInteger n      = n