[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