SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: FragmentOutputs = struct @align(16) {
  loc0:i32 @offset(0), @location(0)
  frag_depth:f32 @offset(4), @builtin(frag_depth)
  loc1:u32 @offset(8), @location(1)
  loc2:f32 @offset(12), @location(2)
  sample_mask:u32 @offset(16), @builtin(sample_mask)
  loc3:vec4<f32> @offset(32), @location(3)
  loc4:f16 @offset(48), @location(4)
  loc5:vec3<f16> @offset(56), @location(5)
}

%tint_symbol = @fragment func():FragmentOutputs {
  $B1: {
    ret FragmentOutputs(1i, 2.0f, 1u, 1.0f, 2u, vec4<f32>(1.0f, 2.0f, 3.0f, 4.0f), 2.25h, vec3<f16>(3.0h, 5.0h, 8.0h))
  }
}

invalid entry point IO struct uses
********************************************************************
*  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.  *
********************************************************************
