SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %4:f32 = load_vector_element %gl_FragCoord, 0u
    %x_20:f32 = let %4
    %6:f32 = load_vector_element %gl_FragCoord, 0u
    %x_23:f32 = let %6
    %8:f32 = load_vector_element %gl_FragCoord, 1u
    %x_26:f32 = let %8
    %10:f32 = load_vector_element %gl_FragCoord, 1u
    %x_32:f32 = let %10
    %12:f32 = mul %x_20, 0.00390625f
    %13:i32 = call %tint_f32_to_i32, %x_23
    %15:i32 = let %13
    %16:i32 = call %tint_f32_to_i32, %x_26
    %17:i32 = xor %15, %16
    %18:f32 = convert %17
    %19:f32 = mul %18, 0.00390625f
    %20:f32 = mul %x_32, 0.00390625f
    %21:vec4<f32> = construct %12, %19, %20, 1.0f
    store %x_GLF_color, %21
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B3: {
    store %gl_FragCoord, %gl_FragCoord_param
    %24:void = call %main_1
    %25:vec4<f32> = load %x_GLF_color
    %26:main_out = construct %25
    ret %26
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B4: {
    %28:i32 = convert %value
    %29:bool = gte %value, -2147483648.0f
    %30:i32 = select -2147483648i, %28, %29
    %31:bool = lte %value, 2147483520.0f
    %32:i32 = select 2147483647i, %30, %31
    ret %32
  }
}

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.  *
********************************************************************
