SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: S = struct @align(4) {
  field0:f32 @offset(0)
  field1:f32 @offset(4)
  field2:f32 @offset(8)
  field3:f32 @offset(12)
  field4:f32 @offset(16)
  field5:f32 @offset(20)
}

main_out = struct @align(4) {
  x_1_1:f32 @offset(0), @location(1)
  x_1_2:f32 @offset(4), @location(2), @interpolate(perspective, centroid)
  x_1_3:f32 @offset(8), @location(3), @interpolate(perspective, sample)
  x_1_4:f32 @offset(12), @location(4), @interpolate(linear)
  x_1_5:f32 @offset(16), @location(5), @interpolate(linear, centroid)
  x_1_6:f32 @offset(20), @location(6), @interpolate(linear, sample)
}

$B1: {  # root
  %x_1:ptr<private, S, read_write> = var
}

%main_1 = func():void {
  $B2: {
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B3: {
    %4:void = call %main_1
    %5:ptr<private, f32, read_write> = access %x_1, 0u
    %6:f32 = load %5
    %7:ptr<private, f32, read_write> = access %x_1, 1u
    %8:f32 = load %7
    %9:ptr<private, f32, read_write> = access %x_1, 2u
    %10:f32 = load %9
    %11:ptr<private, f32, read_write> = access %x_1, 3u
    %12:f32 = load %11
    %13:ptr<private, f32, read_write> = access %x_1, 4u
    %14:f32 = load %13
    %15:ptr<private, f32, read_write> = access %x_1, 5u
    %16:f32 = load %15
    %17:main_out = construct %6, %8, %10, %12, %14, %16
    ret %17
  }
}

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