Is it possible that GHC generates STG with invalid binding semantics for certain cases that the Cmm codegen fix or ignore? This could explain my observations. I've checked the Stg linter source (StgLint.hs ; GHC 8.2.2 and github master) and it does not check StgRhsClosure free var and binder list at all. And the scope checker function (addInScopeVars) does not check for duplicates.
Any thoughts? Cheers, Csaba On Sat, Nov 3, 2018 at 9:53 AM Csaba Hruska <csaba.hru...@gmail.com> wrote: > Hi, > > Can StgRhsClosure's freevar list ([occ]) or argument list ([bndr]) contain > duplicates? > > Cheers, > Csaba > > data GenStgRhs bndr occ > = StgRhsClosure > CostCentreStack -- CCS to be attached (default is > CurrentCCS) > StgBinderInfo -- Info about how this binder is used (see > below) > *[occ]* -- non-global free vars; a list, rather > than > -- a set, because order is important > !UpdateFlag -- ReEntrant | Updatable | SingleEntry > *[bndr]* -- arguments; if empty, then not a > function; > -- as above, order is important. > (GenStgExpr bndr occ) -- body > >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs