Dubious boxity sig `L!P(L)` appears in the output of the 9.4 branch.
When compiling Data.Binary.Builder
for the 9.4 branch I see this signature/function which seems wrong.
It's my understanding !
indicates an argument should be unboxed, and as such should never appear on lazy arguments.
On master the argument is (properly?) recognized as lazy and just gets L
instead. Not sure if whatever caused this is already fixed on master but seemed worth openeing a ticket for.
-- RHS size: {terms: 246, types: 76, coercions: 34, joins: 0/0}
putWord64be [InlPrag=INLINE (sat-args=0)] :: Word64 -> Builder
[GblId,
Arity=4,
Str=<L!P(L)><LCL(C1(L))><1!P(L,L)><L>,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=0,unsat_ok=False,boring_ok=True)
Tmpl= (\ (eta_a1CC [Occ=Once1] :: Word64)
(@r_a1CD)
(eta1_a1CE [Occ=Once1]
:: Data.ByteString.Builder.Internal.BuildStep r_a1CD)
(eta2_a1CF [Occ=Once1]
:: Data.ByteString.Builder.Internal.BufferRange)
(eta3_a1CG [Occ=Once1, OS=OneShot]
:: ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld) ->
((Prim.primBounded
@Word64
(Data.ByteString.Builder.Prim.Internal.$WBP
@Word64
(ghc-prim:GHC.Types.I# 8#)
((\ (x_a1CH [Occ=Once1!] :: Word64)
(op_a1CI [Occ=Once1!] :: GHC.Ptr.Ptr Word8)
(s_a1CJ [Occ=Once1]
:: ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld) ->
case op_a1CI of { GHC.Ptr.Ptr a_a1CL ->
case x_a1CH of { GHC.Word.W64# x#_a1CO ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
a_a1CL
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 56#)))
s_a1CJ
of s2_a1CQ [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 1#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 48#)))
s2_a1CQ
of s1_a1CR [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 2#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 40#)))
s1_a1CR
of s3_a1CS [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 3#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 32#)))
s3_a1CS
of s4_a1CT [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 4#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 24#)))
s4_a1CT
of s5_a1CU [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 5#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 16#)))
s5_a1CU
of s6_a1CV [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 6#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 8#)))
s6_a1CV
of s7_a1CW [Occ=Once1]
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# a_a1CL 7#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord# x#_a1CO))
s7_a1CW
of s8_a1CX [Occ=Once1]
{ __DEFAULT ->
(# s8_a1CX,
GHC.Ptr.Ptr @Word8 (ghc-prim:GHC.Prim.plusAddr# a_a1CL 8#) #)
}
}
}
}
}
}
}
}
}
})
`cast` <Co:11> :: (Word64
-> GHC.Ptr.Ptr Word8
-> ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State#
ghc-prim:GHC.Prim.RealWorld,
GHC.Ptr.Ptr Word8 #))
~R# (Word64
-> GHC.Ptr.Ptr Word8 -> IO (GHC.Ptr.Ptr Word8))))
eta_a1CC)
`cast` <Co:14> :: Builder
~R# (forall {r1}.
Data.ByteString.Builder.Internal.BuildStep r1
-> Data.ByteString.Builder.Internal.BufferRange
-> ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State#
ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal r1 #)))
@r_a1CD eta1_a1CE eta2_a1CF eta3_a1CG)
`cast` <Co:21> :: (Word64
-> forall {r}.
Data.ByteString.Builder.Internal.BuildStep (r |> <*>_N)
-> Data.ByteString.Builder.Internal.BufferRange
-> ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal
(r |> <*>_N) #))
~R# (Word64 -> Builder)}]
putWord64be
= (\ (eta_a1CC :: Word64)
(@r_a1CD)
(eta1_a1CE :: Data.ByteString.Builder.Internal.BuildStep r_a1CD)
(eta2_a1CF :: Data.ByteString.Builder.Internal.BufferRange)
(eta3_a1CG [OS=OneShot]
:: ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld) ->
case eta2_a1CF of
{ Data.ByteString.Builder.Internal.BufferRange bx_a1PE bx1_a1PF ->
case ghc-prim:GHC.Prim.<#
(ghc-prim:GHC.Prim.minusAddr# bx1_a1PF bx_a1PE) 8#
of {
__DEFAULT ->
case eta_a1CC of { GHC.Word.W64# x#_a1CO ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
bx_a1PE
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 56#)))
eta3_a1CG
of s2_a1CQ
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 1#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 48#)))
s2_a1CQ
of s1_a1CR
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 2#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 40#)))
s1_a1CR
of s3_a1CS
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 3#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 32#)))
s3_a1CS
of s4_a1CT
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 4#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 24#)))
s4_a1CT
of s5_a1CU
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 5#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 16#)))
s5_a1CU
of s6_a1CV
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 6#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 8#)))
s6_a1CV
of s7_a1CW
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 7#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord# x#_a1CO))
s7_a1CW
of s8_a1CX
{ __DEFAULT ->
((eta1_a1CE
(Data.ByteString.Builder.Internal.BufferRange
(ghc-prim:GHC.Prim.plusAddr# bx_a1PE 8#) bx1_a1PF))
`cast` <Co:3> :: IO
(Data.ByteString.Builder.Internal.BuildSignal r_a1CD)
~R# (ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal r_a1CD #)))
s8_a1CX
}
}
}
}
}
}
}
}
};
1# ->
(# eta3_a1CG,
Data.ByteString.Builder.Internal.BufferFull
@r_a1CD
8#
bx_a1PE
((\ (ds_a1PT :: Data.ByteString.Builder.Internal.BufferRange)
(eta4_B0 [OS=OneShot]
:: ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld) ->
case ds_a1PT of
{ Data.ByteString.Builder.Internal.BufferRange bx3_a1PW bx4_a1PX ->
case eta_a1CC of { GHC.Word.W64# x#_a1CO ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
bx3_a1PW
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 56#)))
eta4_B0
of s2_a1CQ
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 1#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 48#)))
s2_a1CQ
of s1_a1CR
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 2#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 40#)))
s1_a1CR
of s3_a1CS
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 3#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 32#)))
s3_a1CS
of s4_a1CT
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 4#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 24#)))
s4_a1CT
of s5_a1CU
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 5#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 16#)))
s5_a1CU
of s6_a1CV
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 6#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord#
(ghc-prim:GHC.Prim.uncheckedShiftRL64# x#_a1CO 8#)))
s6_a1CV
of s7_a1CW
{ __DEFAULT ->
case ghc-prim:GHC.Prim.writeWord8OffAddr#
@ghc-prim:GHC.Prim.RealWorld
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 7#)
0#
(ghc-prim:GHC.Prim.wordToWord8#
(ghc-prim:GHC.Prim.word64ToWord# x#_a1CO))
s7_a1CW
of s8_a1CX
{ __DEFAULT ->
((eta1_a1CE
(Data.ByteString.Builder.Internal.BufferRange
(ghc-prim:GHC.Prim.plusAddr# bx3_a1PW 8#) bx4_a1PX))
`cast` <Co:3> :: IO
(Data.ByteString.Builder.Internal.BuildSignal r_a1CD)
~R# (ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State#
ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal
r_a1CD #)))
s8_a1CX
}
}
}
}
}
}
}
}
}
})
`cast` <Co:7> :: (Data.ByteString.Builder.Internal.BufferRange
-> ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal r_a1CD #))
~R# (Data.ByteString.Builder.Internal.BufferRange
-> IO
(Data.ByteString.Builder.Internal.BuildSignal
r_a1CD))) #)
}
})
`cast` <Co:21> :: (Word64
-> forall {r}.
Data.ByteString.Builder.Internal.BuildStep (r |> <*>_N)
-> Data.ByteString.Builder.Internal.BufferRange
-> ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld
-> (# ghc-prim:GHC.Prim.State# ghc-prim:GHC.Prim.RealWorld,
Data.ByteString.Builder.Internal.BuildSignal (r |> <*>_N) #))
~R# (Word64 -> Builder)