[GHC] #672: INLINE pragmas for default methods don't work

GHC trac at galois.com
Wed Jan 25 11:40:39 EST 2006


#672: INLINE pragmas for default methods don't work
-------------------------+--------------------------------------------------
    Reporter:  simonpj   |        Owner:  simonpj
        Type:  bug       |       Status:  new    
    Priority:  normal    |    Milestone:         
   Component:  Compiler  |      Version:  6.4.1  
    Severity:  minor     |     Keywords:         
          Os:  Unknown   |   Difficulty:  Unknown
Architecture:  Unknown   |  
-------------------------+--------------------------------------------------
This should work:
 {{{
   class C a where
     f :: (a -> a) -> [a] -> [a]
     {-# INLINE f #-}
     f g xs = reverse (map g (reverse xs))

   instance C Int
 }}}
 Now calling 'f' at Int should inline the code in the default method.
 Currently it doesn't, because we get
 {{{
    dmf a d g xs = ...
    rec { dCInt = dmf Int dCInt }
 }}}
 and since dmf is applied to only one arg, but has arity 3, it isn't
 inlined, which is a bit silly.

 If the class has more than one method, everythign works fine.  (But I did
 fix a bug in {{{TcClassDecl}}} which prevented it working find in 6.4.)

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


More information about the Glasgow-haskell-bugs mailing list