SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
  scalar_f16:f16 @offset(0)
  vec3_f16:vec3<f16> @offset(8)
  mat2x4_f16:mat2x4<f16> @offset(16)
}

S = struct @align(8) {
  inner:Inner @offset(0)
}

$B1: {  # root
  %in:ptr<storage, S, read> = var @binding_point(0, 0)
  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
}

%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %4:S = load %in
    %t:S = let %4
    %6:void = call %tint_store_and_preserve_padding, %out, %t
    ret
  }
}
%tint_store_and_preserve_padding = func(%target:ptr<storage, S, read_write>, %value_param:S):void {
  $B3: {
    %10:ptr<storage, Inner, read_write> = access %target, 0u
    %11:Inner = access %value_param, 0u
    %12:void = call %tint_store_and_preserve_padding_1, %10, %11
    ret
  }
}
%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, Inner, read_write>, %value_param_1:Inner):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
  $B4: {
    %16:ptr<storage, f16, read_write> = access %target_1, 0u
    %17:f16 = access %value_param_1, 0u
    store %16, %17
    %18:ptr<storage, vec3<f16>, read_write> = access %target_1, 1u
    %19:vec3<f16> = access %value_param_1, 1u
    store %18, %19
    %20:ptr<storage, mat2x4<f16>, read_write> = access %target_1, 2u
    %21:mat2x4<f16> = access %value_param_1, 2u
    store %20, %21
    ret
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
