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: {
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    if true [t: $B3] {  # if_1
      $B3: {  # true
        %4:f32 = load_vector_element %gl_FragCoord, 0u
        %x_23:f32 = let %4
        %6:bool = lt %x_23, 0.0f
        if %6 [t: $B4] {  # if_2
          $B4: {  # true
            loop [b: $B5, c: $B6] {  # loop_1
              $B5: {  # body
                store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
                continue  # -> $B6
              }
              $B6: {  # continuing
                %7:f32 = load_vector_element %gl_FragCoord, 0u
                %x_32:f32 = let %7
                %9:bool = lt %x_32, 0.0f
                %10:bool = eq %9, false
                break_if %10  # -> [t: exit_loop loop_1, f: $B5]
              }
            }
            exit_if  # if_2
          }
        }
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B7: {
    store %gl_FragCoord, %gl_FragCoord_param
    %13:void = call %main_1
    %14:vec4<f32> = load %x_GLF_color
    %15:main_out = construct %14
    ret %15
  }
}

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