Note [Post-unarisation invariants]
STG programs after unarisation have these invariants:
1. No unboxed sums at all.
2. No unboxed tuple binders. Tuples only appear in return position.
3. Binders and literals always have zero (for void arguments) or one PrimRep.
(i.e. typePrimRep1 won't crash; see Note [VoidRep] in GHC.Types.RepType.)
4. DataCon applications (StgRhsCon and StgConApp) don't have void arguments.
This means that it's safe to wrap `StgArg`s of DataCon applications with
`GHC.StgToCmm.Env.NonVoid`, for example.
5. Alt binders (binders in patterns) are always non-void. References 1
- VoidRep GHC.Types.RepType
Referenced by 22
- GHC.StgToCmm.Closure call site ×5
- GHC.StgToCmm.Expr call site ×3
- GHC.Stg.Lint call site ×2
- GHC.Stg.Syntax call site ×2
- GHC.Stg.Unarise call site ×2
- GHC.StgToCmm.Bind call site ×2
- GHC.StgToCmm call site
- GHC.StgToCmm.Lit call site
- GHC.StgToJS.Literal call site
- Rubbish literals GHC.Types.Literal
- VoidRep GHC.Types.RepType
- GHC.Types.RepType call site