#3138: Returning a known constructor: GHC generates terrible code for cmonad
-----------------------------------------+----------------------------------
    Reporter:  simonpj                   |        Owner:                  
        Type:  run-time performance bug  |       Status:  new             
    Priority:  normal                    |    Milestone:  6.12 branch     
   Component:  Compiler                  |      Version:  6.10.1          
    Severity:  normal                    |   Resolution:                  
    Keywords:                            |   Difficulty:  Unknown         
    Testcase:                            |           Os:  Unknown/Multiple
Architecture:  Unknown/Multiple          |  
-----------------------------------------+----------------------------------
Changes (by simonpj):

 * cc: [email protected] (added)

Comment:

 Lennart, I've taken a quick look. As you say, it generates quite a lot of
 code.  I attach the result of -ddump-simpl for `Inf.hs` compiled with -O.

 There is indeed one function that return a simple constructor from a sum
 type, namely `+=_r1mk`. Doing the CPR transform for this would indeed be a
 significant improvement.

 But is that it? Can you point to other lost optimisations?  For example,
 `while` is recursive so we can't inline that.

 I'm sure you're right that we should get good code here, but because I
 don't know the code, it's harder to spot what should be done that isn't
 getting done.  Can you help?

 Simon

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3138#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to