SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # root
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %5:i32 = load %4
    %x_22:i32 = let %5
    %7:u32 = bitcast %x_22
    %8:u32 = and %7, 31u
    %9:i32 = shr 1i, %8
    %10:bool = gt %9, 0i
    if %10 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %12:i32 = load %11
        %x_29:i32 = let %12
        %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %15:i32 = load %14
        %x_32:i32 = let %15
        %17:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %18:i32 = load %17
        %x_35:i32 = let %18
        %20:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %21:i32 = load %20
        %x_38:i32 = let %21
        %23:f32 = convert %x_29
        %24:f32 = let %23
        %25:f32 = convert %x_32
        %26:f32 = let %25
        %27:f32 = convert %x_35
        %28:f32 = let %27
        %29:f32 = convert %x_38
        %30:vec4<f32> = construct %24, %26, %28, %29
        store %x_GLF_color, %30
        exit_if  # if_1
      }
      $B4: {  # false
        %31:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %32:i32 = load %31
        %x_42:i32 = let %32
        %34:f32 = convert %x_42
        %x_43:f32 = let %34
        %36:vec4<f32> = construct %x_43, %x_43, %x_43, %x_43
        store %x_GLF_color, %36
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %38:void = call %main_1
    %39:vec4<f32> = load %x_GLF_color
    %40:main_out = construct %39
    ret %40
  }
}

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