stg-lint fails on unlifted-type join point binding
While validating GHC with BuildFlavour=devel2 and -dstg-lint I found that the linter chokes when it finds a join point of unlifted type (like this one from the Binary module),
ghc-stage1: panic! (the 'impossible' happened)
(GHC version 8.3.20170815 for x86_64-unknown-linux):
*** Stg Lint ErrMsgs: in Stg2Stg ***
<no location info>: warning:
[RHS of $j_sDSL :: (# State# RealWorld, () #)]
Let(rec) binder ‘$j_sDSL’ has unlifted type ‘(# State# RealWorld,
() #)’
RHS: \r []
src<compiler/utils/Binary.hs:516:9-17>
src<compiler/utils/Binary.hs:(516,21)-(518,26)>
src<compiler/utils/Binary.hs:260:1-45>
src<compiler/utils/Binary.hs:(239,1)-(246,34)>
case readIntArray# [ww_sDSF 0# w1_sDSJ] of {
...
If I'm not mistaken there is no problem with join points having unlifted type (see Note [CoreSyn let/app invariant]). We just need to update the STG linter appropriately.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |