
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
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