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

%func_ = func():i32 {
  $B2: {
    %i:ptr<function, i32, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
    %6:i32 = load %5
    store %i, %6
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %7:i32 = load %i
        %8:i32 = add %7, 1i
        store %i, %8
        if true [t: $B5] {  # if_1
          $B5: {  # true
            if true [t: $B6] {  # if_2
              $B6: {  # true
                %9:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
                %10:i32 = load %9
                %x_65:i32 = let %10
                ret %x_65
              }
            }
            exit_if  # if_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %12:i32 = load %i
        %x_66:i32 = let %12
        %14:ptr<uniform, i32, read> = access %x_7, 0u, 1i, 0u
        %15:i32 = load %14
        %x_68:i32 = let %15
        %17:bool = lt %x_66, %x_68
        %18:bool = eq %17, false
        break_if %18  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    %19:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
    %20:i32 = load %19
    %x_71:i32 = let %20
    ret %x_71
  }
}
%main_1 = func():void {
  $B7: {
    %23:i32 = call %func_
    %x_27:i32 = let %23
    %25:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
    %26:i32 = load %25
    %27:bool = eq %x_27, %26
    if %27 [t: $B8, f: $B9] {  # if_3
      $B8: {  # true
        %28:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
        %29:i32 = load %28
        %30:f32 = convert %29
        %31:f32 = let %30
        %32:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %33:i32 = load %32
        %34:f32 = convert %33
        %35:f32 = let %34
        %36:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %37:i32 = load %36
        %38:f32 = convert %37
        %39:f32 = let %38
        %40:ptr<uniform, i32, read> = access %x_7, 0u, 2i, 0u
        %41:i32 = load %40
        %42:f32 = convert %41
        %43:vec4<f32> = construct %31, %35, %39, %42
        store %x_GLF_color, %43
        exit_if  # if_3
      }
      $B9: {  # false
        %44:ptr<uniform, i32, read> = access %x_7, 0u, 0i, 0u
        %45:i32 = load %44
        %46:f32 = convert %45
        %47:vec4<f32> = construct %46
        store %x_GLF_color, %47
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B10: {
    %49:void = call %main_1
    %50:vec4<f32> = load %x_GLF_color
    %51:main_out = construct %50
    ret %51
  }
}

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