
In the context of the array library, we stumbled over another problem. Does GHC transitive inlining across modules? Let's say, we have the following scenario: module B (foo) where {-# INLINE foo #-} foo .. = ...bar... {-# INLINE bar #-} bar .. = ... module L (baz) where import B {#- INLINE baz #-} baz .. = ...B.foo... module Main where import L main .. = ...L.baz... GHC in this case inlines the whole expression "...B.foo..." in `Main', but will it inline the right hand side of `B.bar' in `Main' (or even of `B.foo')? If the INLINE pragma is transitive across modules boundaries, one would hope so. It seems that GHC is not (always?) doing this inlining, which already for a very simple benchmark costs us a factor of 5 runtime! (With inlining - enforced by copying definitions manually into `Main' - the code produced by GHC is actually a little bit faster than the code for the corresponding C program). Cheers, Manuel PS: I had problems building GHCi and it seems as if my message to cvs-ghc@haskell.org doesn't get through somehow...

Tue, 12 Dec 2000 00:41:01 +1100, Manuel M. T. Chakravarty
PS: I had problems building GHCi and it seems as if my message to cvs-ghc@haskell.org doesn't get through somehow...
Subject: "mail boot" problem ? I have got it. -- __("< Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.ids.net.pl/ \__/ ^^ SYGNATURA ZASTÊPCZA QRCZAK
participants (2)
-
Manuel M. T. Chakravarty
-
qrczak@knm.org.pl