SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 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 = block {  # 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 {
  %b2 = block {
    %count:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %7:i32 = load %6
    store %count, %7
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %9:i32 = load %8
    store %i, %9
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %10:i32 = load %i
        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %12:i32 = load %11
        %13:bool = lt %10, %12
        if %13 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %14:i32 = load %count
        %15:i32 = mod %14, -93448i
        %16:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %17:i32 = load %16
        %18:bool = gt %15, %17
        if %18 [t: %b7] {  # if_2
          %b7 = block {  # true
            %19:i32 = load %count
            %20:i32 = add %19, 1i
            store %count, %20
            exit_if  # if_2
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %21:i32 = load %i
        %22:i32 = add %21, 1i
        store %i, %22
        next_iteration %b3
      }
    }
    %23:i32 = load %count
    %24:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %25:i32 = load %24
    %26:bool = eq %23, %25
    if %26 [t: %b8, f: %b9] {  # if_3
      %b8 = block {  # true
        %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %28:i32 = load %27
        %29:f32 = convert %28
        %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %31:i32 = load %30
        %32:f32 = convert %31
        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %34:i32 = load %33
        %35:f32 = convert %34
        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %37:i32 = load %36
        %38:f32 = convert %37
        %39:vec4<f32> = construct %29, %32, %35, %38
        store %x_GLF_color, %39
        exit_if  # if_3
      }
      %b9 = block {  # false
        %40:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %41:i32 = load %40
        %42:f32 = convert %41
        %43:vec4<f32> = construct %42
        store %x_GLF_color, %43
        exit_if  # if_3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b10 {
  %b10 = block {
    %45:void = call %main_1
    %46:vec4<f32> = load %x_GLF_color
    %47:main_out = construct %46
    ret %47
  }
}

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