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_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
}

%main_1 = func():void {
  $B2: {
    if true [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %4:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %5:i32 = load %4
        %x_29:i32 = let %5
        %7:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %8:i32 = load %7
        %x_32:i32 = let %8
        %10:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
        %11:i32 = load %10
        %x_35:i32 = let %11
        %13:f32 = convert %x_29
        %14:f32 = let %13
        %15:f32 = convert %x_32
        %16:f32 = let %15
        %17:f32 = convert %x_35
        %18:vec4<f32> = construct 1.0f, %14, %16, %17
        store %x_GLF_color, %18
        exit_if  # if_1
      }
      $B4: {  # false
        %19:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
        %20:i32 = load %19
        %x_39:i32 = let %20
        %22:f32 = convert %x_39
        %x_40:f32 = let %22
        %24:vec4<f32> = construct %x_40, %x_40, %x_40, %x_40
        store %x_GLF_color, %24
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %26:void = call %main_1
    %27:vec4<f32> = load %x_GLF_color
    %28:main_out = construct %27
    ret %28
  }
}

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