SKIP: FAILED

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

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

%main_1 = func():void {
  $B2: {
    %inbounds:ptr<function, bool, read_write> = var
    %x_31:ptr<function, bool, read_write> = var
    %x_32_phi:ptr<function, bool, read_write> = var
    %7:f32 = load_vector_element %gl_FragCoord, 0u
    %x_24:f32 = let %7
    %9:bool = lt %x_24, 128.0f
    %x_25:bool = let %9
    store %x_32_phi, %x_25
    %11:bool = eq %x_25, false
    if %11 [t: $B3] {  # if_1
      $B3: {  # true
        %12:f32 = load_vector_element %gl_FragCoord, 1u
        %x_30:f32 = let %12
        %14:bool = lt %x_30, 128.0f
        store %x_31, %14
        %15:bool = load %x_31
        store %x_32_phi, %15
        exit_if  # if_1
      }
    }
    %16:bool = load %x_32_phi
    %x_32:bool = let %16
    store %inbounds, %x_32
    %18:bool = load %inbounds
    %x_33:bool = let %18
    %20:i32 = select -1i, 1i, %x_33
    store %expect, %20
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B4: {
    store %gl_FragCoord, %gl_FragCoord_param
    %23:void = call %main_1
    %24:i32 = load %expect
    %25:main_out = construct %24
    ret %25
  }
}

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