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
}

%main_1 = func():void {
  $B2: {
    %m:ptr<function, mat2x2<f32>, read_write> = var
    store %m, mat2x2<f32>(vec2<f32>(1.0f, 2.0f), vec2<f32>(3.0f, 4.0f))
    %4:mat2x2<f32> = load %m
    %x_26:mat2x2<f32> = let %4
    %6:mat2x2<f32> = load %m
    %x_28:mat2x2<f32> = let %6
    %8:mat2x2<f32> = transpose %x_26
    %9:mat2x2<f32> = let %8
    %10:mat2x2<f32> = transpose %x_28
    %11:mat2x2<f32> = mul %9, %10
    %x_30:mat2x2<f32> = let %11
    %13:mat2x2<f32> = load %m
    %x_31:mat2x2<f32> = let %13
    %15:mat2x2<f32> = load %m
    %x_32:mat2x2<f32> = let %15
    %17:mat2x2<f32> = mul %x_31, %x_32
    %18:mat2x2<f32> = transpose %17
    %x_34:mat2x2<f32> = let %18
    %20:vec2<f32> = access %x_30, 0u
    %21:vec2<f32> = access %x_34, 0u
    %22:vec2<bool> = eq %20, %21
    %23:bool = all %22
    %24:bool = let %23
    %25:vec2<f32> = access %x_30, 1u
    %26:vec2<f32> = access %x_34, 1u
    %27:vec2<bool> = eq %25, %26
    %28:bool = all %27
    %29:bool = and %24, %28
    if %29 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_1
      }
      $B4: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %31:void = call %main_1
    %32:vec4<f32> = load %x_GLF_color
    %33:main_out = construct %32
    ret %33
  }
}

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