Skip to content
  • Moritz Angermann's avatar
    [Sized Cmm] properly retain sizes. · be5d74ca
    Moritz Angermann authored and Marge Bot's avatar Marge Bot committed
    
    
    This replaces all Word<N> = W<N># Word# and Int<N> = I<N># Int#  with
    Word<N> = W<N># Word<N># and Int<N> = I<N># Int<N>#, thus providing us
    with properly sized primitives in the codegenerator instead of pretending
    they are all full machine words.
    
    This came up when implementing darwinpcs for arm64.  The darwinpcs reqires
    us to pack function argugments in excess of registers on the stack.  While
    most procedure call standards (pcs) assume arguments are just passed in
    8 byte slots; and thus the caller does not know the exact signature to make
    the call, darwinpcs requires us to adhere to the prototype, and thus have
    the correct sizes.  If we specify CInt in the FFI call, it should correspond
    to the C int, and not just be Word sized, when it's only half the size.
    
    This does change the expected output of T16402 but the new result is no
    less correct as it eliminates the narrowing (instead of the `and` as was
    previously done).
    
    Bumps the array, bytestring, text, and binary submodules.
    
    Co-Authored-By: default avatarBen Gamari <ben@well-typed.com>
    
    Metric Increase:
        T13701
        T14697
    be5d74ca