SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 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 = block {  # root
  %x_1:ptr<private, S, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b3 {
  %b3 = block {
    %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.  *
********************************************************************
