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 {
    %a:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %6:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_26:i32 = load %6
    store %a, %x_26
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %x_28:i32 = load %8
    store %i, %x_28
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_33:i32 = load %i
        %11:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_35:i32 = load %11
        %13:bool = lt %x_33, %x_35
        if %13 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_38:i32 = load %i
        switch %x_38 [c: (0i -1i, %b7), c: (default, %b8)] {  # switch_1
          %b7 = block {  # case
            %15:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
            %x_42:i32 = load %15
            store %a, %x_42
            exit_switch  # switch_1
          }
          %b8 = block {  # case
            exit_switch  # switch_1
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %x_43:i32 = load %i
        %18:i32 = add %x_43, 1i
        store %i, %18
        next_iteration %b3
      }
    }
    %x_45:i32 = load %a
    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %x_47:i32 = load %20
    %22:bool = eq %x_45, %x_47
    if %22 [t: %b9, f: %b10] {  # if_2
      %b9 = block {  # true
        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_53:i32 = load %23
        %25:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_56:i32 = load %25
        %27:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_59:i32 = load %27
        %29:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_62:i32 = load %29
        %31:f32 = convert %x_53
        %32:f32 = convert %x_56
        %33:f32 = convert %x_59
        %34:f32 = convert %x_62
        %35:vec4<f32> = construct %31, %32, %33, %34
        store %x_GLF_color, %35
        exit_if  # if_2
      }
      %b10 = block {  # false
        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %x_66:i32 = load %36
        %x_67:f32 = convert %x_66
        %39:vec4<f32> = construct %x_67, %x_67, %x_67, %x_67
        store %x_GLF_color, %39
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b11 {
  %b11 = block {
    %41:void = call %main_1
    %42:vec4<f32> = load %x_GLF_color
    %43:main_out = construct %42
    ret %43
  }
}

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