Skip to content

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.

@sgraf812

-- 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)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information