Simon Peyton-Jones wrote:
| > GHC does some constant folding, but little by way of strength
| reduction, or using shifts instead of multiplication.  It's pretty easy
| to add more: it's all done in a single module.  Look at primOpRules in
| the module PrelRules.
| >
| > Patches welcome!  But please also supply test-suite tests that check
| the correctness of the rules.
| >
|
| So... you mean it's source-level transformation rules? (Rather than
| wired into the compiler itself somewhere.)

No, constant folding is part of the compiler, I'm afraid, in the module 
PrelRules.

Simon

_Constant_ folding is, but in GHC.Base there are rules like (unboxed) multiplying by zero or one, or adding or subtracting zero, from an unknown other (non-constant) value. I think shifts might be doable via RULES... if you were willing to make one rule for each denominator 2, 4, 8 and so on, which rather depends on max. Int... (and that's not Integers either, I guess)

Isaac
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to