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: {
    %a:ptr<function, u32, read_write> = var
    store %a, 4u
    %4:u32 = load %a
    %x_5:u32 = let %4
    %6:u32 = call %tint_div_u32, %x_5, 2u
    switch %6 [c: (2u, $B3), c: (default, $B4)] {  # switch_1
      $B3: {  # case
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_switch  # switch_1
      }
      $B4: {  # case
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_switch  # switch_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %9:void = call %main_1
    %10:vec4<f32> = load %x_GLF_color
    %11:main_out = construct %10
    ret %11
  }
}
%tint_div_u32 = func(%lhs:u32, %rhs:u32):u32 {
  $B6: {
    %14:bool = eq %rhs, 0u
    %15:u32 = select %rhs, 1u, %14
    %16:u32 = div %lhs, %15
    ret %16
  }
}

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