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
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%f_mf22_ = func(%m:ptr<function, mat2x2<f32>, read_write>):vec3<f32> {
  $B2: {
    loop [b: $B3] {  # loop_1
      $B3: {  # body
        ret vec3<f32>(1.0f)
      }
    }
    unreachable
  }
}
%main_1 = func():void {
  $B4: {
    %param:ptr<function, mat2x2<f32>, read_write> = var
    %x_38_phi:ptr<function, mat2x2<f32>, read_write> = var
    %8:f32 = load_vector_element %gl_FragCoord, 0u
    %x_34:f32 = let %8
    store %x_38_phi, mat2x2<f32>(vec2<f32>(0.0f))
    %10:bool = gte %x_34, 0.0f
    if %10 [t: $B5] {  # if_1
      $B5: {  # true
        store %x_38_phi, mat2x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f))
        exit_if  # if_1
      }
    }
    %11:mat2x2<f32> = load %x_38_phi
    %x_38:mat2x2<f32> = let %11
    %13:mat2x2<f32> = mul %x_38, %x_38
    store %param, %13
    %14:vec3<f32> = call %f_mf22_, %param
    %x_40:vec3<f32> = let %14
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B6: {
    store %gl_FragCoord, %gl_FragCoord_param
    %18:void = call %main_1
    %19:vec4<f32> = load %x_GLF_color
    %20:main_out = construct %19
    ret %20
  }
}

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