Note [No nested Unboxed inside Boxed in demand signature]
Consider ``` f p@(x,y) | even (x+y) = [] | otherwise = [p] ``` Demand analysis will infer that the function body puts a demand of `1P(1!L,1!L)` on 'p', e.g., Boxed on the outside but Unboxed on the inside. But worker/wrapper can't unbox the pair components without unboxing the pair! So we better say `1P(1L,1L)` in the demand signature in order not to spread wrong Boxity info. That happens via the call to trimBoxity in 'finaliseArgBoxities'/'finaliseLetBoxity'.
References 0
This Note does not link to any other.
Referenced by 1
- Finalising boxity for demand signatures GHC.Core.Opt.DmdAnal