SKIP: FAILED

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

buf0 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr, 2> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

%b1 = block {  # root
  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %a:ptr<function, i32, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %6:i32 = load %5
    %7:i32 = shiftl %6, 5u
    %8:u32 = bitcast %7
    %9:i32 = shiftr 1i, %8
    %10:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %11:i32 = load %10
    %12:u32 = bitcast %11
    %13:i32 = shiftr %9, %12
    store %a, %13
    %14:i32 = load %a
    %15:bool = eq %14, 1i
    if %15 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %17:i32 = load %16
        %18:f32 = convert %17
        %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %20:i32 = load %19
        %21:f32 = convert %20
        %22:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %23:i32 = load %22
        %24:f32 = convert %23
        %25:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %26:i32 = load %25
        %27:f32 = convert %26
        %28:vec4<f32> = construct %18, %21, %24, %27
        store %x_GLF_color, %28
        exit_if  # if_1
      }
      %b4 = block {  # false
        %29:i32 = load %a
        %30:f32 = convert %29
        %31:vec4<f32> = construct %30
        store %x_GLF_color, %31
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %33:void = call %main_1
    %34:vec4<f32> = load %x_GLF_color
    %35:main_out = construct %34
    ret %35
  }
}

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