What's preventing inlining GHC.Magic.lazy?

Matthew Pickering matthewtpickering at gmail.com
Wed Jul 17 08:05:34 UTC 2019


I think it doesn't get inlined because we don't add an unfolding in
the definition of `lazyId` in `MkId`.

The definition in `GHC.Magic` is just for documentation I think.

Cheers,

Matt

On Wed, Jul 17, 2019 at 8:46 AM Ömer Sinan Ağacan <omeragacan at gmail.com> wrote:
>
> Hi Simon,
>
> I'm trying to understand what's preventing inlining GHC.Magic.lazy. I can see
> with -ddump-simpl -ddump-simpl-iterations -ddump-prep that we only eliminate it
> in CorePrep, so it's preserved during simplifications and tidying, but I don't
> see how. It doesn't have a NOINLINE pragma, and we don't check whether the id
> we're inlining is lazyId (using MkId.lazyId or MkId.lazyIdKey) anywhere in the
> compiler as far as I can see.
>
> I also checked Note [lazyId magic] in MkId, but it doesn't explain how we avoid
> inlining it.
>
> Could you say a few words on this?
>
> Thanks
> Ömer
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list