SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(4) {
  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
}

$B1: {  # root
  %x_2:ptr<private, vec4<f32>, read_write> = var
  %x_3:ptr<private, i32, read_write> = var
  %x_4:ptr<private, i32, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %5:vec4<f32> = load %x_2
    %x_16:vec4<f32> = let %5
    %7:i32 = load %x_3
    %x_26:i32 = let %7
    %9:f32 = access %x_16, 0u
    %10:i32 = call %tint_f32_to_i32, %9
    %12:i32 = and %10, 1i
    %13:i32 = let %12
    %14:f32 = access %x_16, 1u
    %15:i32 = call %tint_f32_to_i32, %14
    %16:i32 = and %15, 1i
    %17:i32 = add %13, %16
    %18:i32 = add %17, %x_26
    %19:i32 = let %18
    %20:f32 = access %x_16, 2u
    %21:i32 = call %tint_f32_to_i32, %20
    %22:bool = eq %19, %21
    if %22 [t: $B3] {  # if_1
      $B3: {  # true
        exit_if  # if_1
      }
    }
    store %x_4, 1i
    ret
  }
}
%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
  $B4: {
    store %x_2, %x_2_param
    store %x_3, %x_3_param
    %26:void = call %main_1
    %27:i32 = load %x_4
    %28:main_out = construct %27
    ret %28
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B5: {
    %30:i32 = convert %value
    %31:bool = gte %value, -2147483648.0f
    %32:i32 = select -2147483648i, %30, %31
    %33:bool = lte %value, 2147483520.0f
    %34:i32 = select 2147483647i, %32, %33
    ret %34
  }
}

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