#5237: Inefficient code generated for x^2
-------------------------------+--------------------------------------------
    Reporter:  scpmw           |        Owner:                         
        Type:  bug             |       Status:  patch                  
    Priority:  normal          |    Milestone:  7.4.1                  
   Component:  libraries/base  |      Version:  7.0.3                  
    Keywords:                  |     Testcase:                         
   Blockedby:                  |   Difficulty:                         
          Os:  Linux           |     Blocking:                         
Architecture:  x86_64 (amd64)  |      Failure:  Runtime performance bug
-------------------------------+--------------------------------------------

Comment(by daniel.is.fischer):

 I've tested the rules in the last days, with mixed success. For Int and
 Integer, where the rules are in the same place as `(^)`, they fire okay,
 unless specialisation gets in the way (so far, that affects `Integer ->
 Integer -> Integer`, `Integer -> Int -> Integer` and `Int -> Int -> Int`).
 To get the rules for `Word` exponents to fire, I had to specify the
 exponent as `W# n##`, so those rules seem pretty useless.

 For the types we have specialisations for, specialising is done before
 rule-rewriting, apparently. I think it might be good to have a rule-
 rewriting pass before any other optimisations are tried, based on the
 assumption that rules generally are written to give large benefits, while
 general optimisations often give only a small benefit. If it's easy enough
 to add a rule-scanning pass before other simplifications, it's worth
 thinking about it.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5237#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to