SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
  gl_Position:vec4<f32> @offset(0), @builtin(position)
  pos_1:u32 @offset(16), @location(0), @interpolate(flat)
}

$B1: {  # root
  %position_1:ptr<private, vec4<f32>, read_write> = var
  %pos:ptr<private, u32, read_write> = var
  %gl_Position:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %5:vec4<f32> = load %position_1
    store %gl_Position, %5
    store %pos, 0u
    ret
  }
}
%tint_symbol = @vertex func(%position_1_param:vec4<f32> [@location(0)]):main_out {
  $B3: {
    store %position_1, %position_1_param
    %8:void = call %main_1
    %9:vec4<f32> = load %gl_Position
    %10:u32 = load %pos
    %11:main_out = construct %9, %10
    ret %11
  }
}

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