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, 3> @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: {
    %a:ptr<function, i32, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %6:i32 = load %5
    %x_25:i32 = let %6
    store %a, %x_25
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %8:i32 = load %a
        %x_30:i32 = let %8
        %10:bool = gte %x_30, 0i
        if %10 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %11:i32 = load %a
        %x_33:i32 = let %11
        %13:i32 = call %tint_div_i32, %x_33, 2i
        %15:i32 = sub %13, 1i
        store %a, %15
        continue  # -> $B4
      }
      $B4: {  # continuing
        next_iteration  # -> $B3
      }
    }
    %16:i32 = load %a
    %x_36:i32 = let %16
    %18:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %19:i32 = load %18
    %x_38:i32 = let %19
    %21:i32 = negation %x_38
    %22:bool = eq %x_36, %21
    if %22 [t: $B7, f: $B8] {  # if_2
      $B7: {  # true
        %23:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %24:i32 = load %23
        %x_45:i32 = let %24
        %26:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %27:i32 = load %26
        %x_48:i32 = let %27
        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %30:i32 = load %29
        %x_51:i32 = let %30
        %32:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %33:i32 = load %32
        %x_54:i32 = let %33
        %35:f32 = convert %x_45
        %36:f32 = let %35
        %37:f32 = convert %x_48
        %38:f32 = let %37
        %39:f32 = convert %x_51
        %40:f32 = let %39
        %41:f32 = convert %x_54
        %42:vec4<f32> = construct %36, %38, %40, %41
        store %x_GLF_color, %42
        exit_if  # if_2
      }
      $B8: {  # false
        %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %44:i32 = load %43
        %x_58:i32 = let %44
        %46:f32 = convert %x_58
        %x_59:f32 = let %46
        %48:vec4<f32> = construct %x_59, %x_59, %x_59, %x_59
        store %x_GLF_color, %48
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B9: {
    %50:void = call %main_1
    %51:vec4<f32> = load %x_GLF_color
    %52:main_out = construct %51
    ret %52
  }
}
%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B10: {
    %55:bool = eq %rhs, 0i
    %56:bool = eq %lhs, -2147483648i
    %57:bool = eq %rhs, -1i
    %58:bool = and %56, %57
    %59:bool = or %55, %58
    %60:i32 = select %rhs, 1i, %59
    %61:i32 = div %lhs, %60
    ret %61
  }
}

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