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, 4> @offset(0)
}

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

$B1: {  # 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: {
    %i:ptr<function, i32, read_write> = var
    %a:ptr<function, array<i32, 2>, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %7:i32 = load %6
    store %i, %7
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %8:i32 = load %i
        %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %10:i32 = load %9
        %11:bool = lt %8, %10
        if %11 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %13:i32 = load %12
        %14:i32 = let %13
        %15:i32 = load %i
        %16:vec2<i32> = construct %15
        %17:vec2<i32> = let %16
        %18:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %19:i32 = load %18
        %20:vec2<i32> = construct 3i, %19
        %21:vec2<i32> = call %tint_mod_v2i32, %17, %20
        %23:i32 = access %21, 1u
        %24:array<i32, 2> = construct %14, %23
        store %a, %24
        continue  # -> $B4
      }
      $B4: {  # continuing
        %25:i32 = load %i
        %26:i32 = add %25, 1i
        store %i, %26
        next_iteration  # -> $B3
      }
    }
    %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %28:i32 = load %27
    %29:ptr<function, i32, read_write> = access %a, %28
    %30:i32 = load %29
    %31:f32 = convert %30
    %32:f32 = let %31
    %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %34:i32 = load %33
    %35:f32 = convert %34
    %36:f32 = let %35
    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %38:i32 = load %37
    %39:f32 = convert %38
    %40:f32 = let %39
    %41:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %42:i32 = load %41
    %43:ptr<function, i32, read_write> = access %a, %42
    %44:i32 = load %43
    %45:f32 = convert %44
    %46:vec4<f32> = construct %32, %36, %40, %45
    store %x_GLF_color, %46
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B7: {
    %48:void = call %main_1
    %49:vec4<f32> = load %x_GLF_color
    %50:main_out = construct %49
    ret %50
  }
}
%tint_mod_v2i32 = func(%lhs:vec2<i32>, %rhs:vec2<i32>):vec2<i32> {
  $B8: {
    %53:vec2<bool> = eq %rhs, vec2<i32>(0i)
    %54:vec2<bool> = eq %lhs, vec2<i32>(-2147483648i)
    %55:vec2<bool> = eq %rhs, vec2<i32>(-1i)
    %56:vec2<bool> = and %54, %55
    %57:vec2<bool> = or %53, %56
    %58:vec2<i32> = select %rhs, vec2<i32>(1i), %57
    %59:vec2<i32> = let %58
    %60:vec2<i32> = div %lhs, %59
    %61:vec2<i32> = mul %60, %59
    %62:vec2<i32> = sub %lhs, %61
    ret %62
  }
}

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