SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(4) {
  field0:array<i32> @offset(0)
}

main_out = struct @align(4) {
  x_4_1:i32 @offset(0), @location(0), @interpolate(flat)
}

%b1 = block {  # root
  %x_2:ptr<private, vec4<f32>, read_write> = var
  %x_3:ptr<private, i32, read_write> = var
  %x_4:ptr<private, i32, read_write> = var
  %x_5:ptr<storage, S, read_write> = var @binding_point(0, 0)
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    store %x_4, 1i
    %x_23:vec4<f32> = load %x_2
    %7:f32 = access %x_23, 0u
    %x_27:i32 = convert %7
    %9:f32 = access %x_23, 1u
    %x_28:i32 = convert %9
    %x_33:i32 = load %x_3
    %12:i32 = and %x_27, 1i
    %13:i32 = and %x_28, 1i
    %14:i32 = add %12, %13
    %15:i32 = add %14, %x_33
    %16:f32 = access %x_23, 2u
    %17:i32 = convert %16
    %18:bool = eq %15, %17
    if %18 [t: %b3] {  # if_1
      %b3 = block {  # true
        exit_if  # if_1
      }
    }
    %19:i32 = mul %x_28, 8i
    %20:i32 = add %x_27, %19
    %21:ptr<storage, i32, read_write> = access %x_5, 0u, %20
    store %21, %x_27
    ret
  }
}
%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out -> %b4 {
  %b4 = block {
    store %x_2, %x_2_param
    store %x_3, %x_3_param
    %25:void = call %main_1
    %26:i32 = load %x_4
    %27:main_out = construct %26
    ret %27
  }
}

unhandled variable address space
********************************************************************
*  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.  *
********************************************************************
