Non-escaping lets, join-points and binding updatability

Nicolas Frisby nicolas.frisby at gmail.com
Wed Oct 16 20:42:56 UTC 2013


If I understand correctly, the LNE-detection in CoreToSTG makes all of the
decisions; it's the only place that the StgLetNoEscape constructor arises.

Join-points are only implemented as LNE if they are detected to be LNE,
which they most often — but not always! — after all the core2core
simplification are.

I have seen let-bindings with no parameters be detected as LNE.

HTH


On Wed, Oct 16, 2013 at 11:27 AM, Jan Stolarek <jan.stolarek at p.lodz.pl>wrote:

> Hi all,
>
> I'm trying to understand this:
>
> 1. Note [What is a non-escaping let] says that one of conditions of
> binding being a non-escaping
> let is non-updatability.
> 2. My understanding is that a if a binding has at least one parameter it
> is non-updatable, though
> I suspect that converse does not have to be true (lambdas)
> 3. Join-points are implemented using LNE bindings and I can imagine a
> join-points not having any
> parameters (and not being a lambda).
>
> Three points above seem inconsistent - where does my reasoning go wrong? I
> suspect that the Note
> might be wrong and an updatable binding can in fact be a LNE binding.
>
> Janek
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131016/3f0903d4/attachment.html>


More information about the ghc-devs mailing list