SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:775 internal compiler error: Communicators = struct @align(16) {
  alice:f32 @offset(0)
  bob:vec4<f32> @offset(16)
}

main_out = struct @align(16) {
  x_1_1:f32 @offset(0), @location(9)
  x_1_2:vec4<f32> @offset(16), @location(10)
  x_2_1:vec4<f32> @offset(32), @builtin(position)
}

%b1 = block {  # root
  %x_1:ptr<private, Communicators, read_write> = var
  %x_2:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    ret
  }
}
%tint_symbol = @vertex func():main_out -> %b3 {
  %b3 = block {
    %5:void = call %main_1
    %6:ptr<private, f32, read_write> = access %x_1, 0u
    %7:f32 = load %6
    %8:ptr<private, vec4<f32>, read_write> = access %x_1, 1u
    %9:vec4<f32> = load %8
    %10:vec4<f32> = load %x_2
    %11:main_out = construct %7, %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.  *
********************************************************************
