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, 4> @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 {
    %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
    %x_32:i32 = load %6
    store %i, %x_32
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_37:i32 = load %i
        %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_39:i32 = load %9
        %11:bool = lt %x_37, %x_39
        if %11 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %12:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_43:i32 = load %12
        %x_44:i32 = load %i
        %15:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %x_46:i32 = load %15
        %17:vec2<i32> = construct %x_44, %x_44
        %18:vec2<i32> = construct 3i, %x_46
        %19:vec2<i32> = mod %17, %18
        %20:i32 = access %19, 1u
        %21:array<i32, 2> = construct %x_43, %20
        store %a, %21
        continue %b4
      }
      %b4 = block {  # continuing
        %x_52:i32 = load %i
        %23:i32 = add %x_52, 1i
        store %i, %23
        next_iteration %b3
      }
    }
    %24:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_55:i32 = load %24
    %26:ptr<function, i32, read_write> = access %a, %x_55
    %x_57:i32 = load %26
    %28:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_60:i32 = load %28
    %30:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_63:i32 = load %30
    %32:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_66:i32 = load %32
    %34:ptr<function, i32, read_write> = access %a, %x_66
    %x_68:i32 = load %34
    %36:f32 = convert %x_57
    %37:f32 = convert %x_60
    %38:f32 = convert %x_63
    %39:f32 = convert %x_68
    %40:vec4<f32> = construct %36, %37, %38, %39
    store %x_GLF_color, %40
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b7 {
  %b7 = block {
    %42:void = call %main_1
    %43:vec4<f32> = load %x_GLF_color
    %44:main_out = construct %43
    ret %44
  }
}

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