SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    store %x_4, 1i
    %6:f32 = load_vector_element %x_2, 0u
    %7:i32 = call %tint_f32_to_i32, %6
    %x_27:i32 = let %7
    %10:f32 = load_vector_element %x_2, 1u
    %11:i32 = call %tint_f32_to_i32, %10
    %x_28:i32 = let %11
    %13:i32 = and %x_27, 1i
    %14:i32 = and %x_28, 1i
    %15:i32 = add %13, %14
    %16:i32 = load %x_3
    %17:i32 = add %15, %16
    %18:i32 = let %17
    %19:f32 = load_vector_element %x_2, 2u
    %20:i32 = call %tint_f32_to_i32, %19
    %21:bool = eq %18, %20
    if %21 [t: $B3] {  # if_1
      $B3: {  # true
        exit_if  # if_1
      }
    }
    %22:i32 = mul %x_28, 8i
    %23:i32 = add %x_27, %22
    %24:ptr<storage, i32, read_write> = access %x_5, 0u, %23
    store %24, %x_27
    ret
  }
}
%tint_symbol = @fragment func(%x_2_param:vec4<f32> [@position], %x_3_param:i32 [@location(0), @interpolate(flat)]):main_out {
  $B4: {
    store %x_2, %x_2_param
    store %x_3, %x_3_param
    %28:void = call %main_1
    %29:i32 = load %x_4
    %30:main_out = construct %29
    ret %30
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B5: {
    %32:i32 = convert %value
    %33:bool = gte %value, -2147483648.0f
    %34:i32 = select -2147483648i, %32, %33
    %35:bool = lte %value, 2147483520.0f
    %36:i32 = select 2147483647i, %34, %35
    ret %36
  }
}

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