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 <[email protected]>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 > [email protected] > http://www.haskell.org/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
