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
    %7:i32 = load %6
    store %a, %7
    %8:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 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
          }
        }
        %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
            %16:i32 = load %15
            store %a, %16
            exit_switch  # switch_1
          }
          %b8 = block {  # case
            exit_switch  # switch_1
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %17:i32 = load %i
        %18:i32 = add %17, 1i
        store %i, %18
        next_iteration %b3
      }
    }
    %19:i32 = load %a
    %20:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %21:i32 = load %20
    %22:bool = eq %19, %21
    if %22 [t: %b9, f: %b10] {  # if_2
      %b9 = block {  # true
        %23:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %24:i32 = load %23
        %25:f32 = convert %24
        %26:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %27:i32 = load %26
        %28:f32 = convert %27
        %29:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %30:i32 = load %29
        %31:f32 = convert %30
        %32:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %33:i32 = load %32
        %34:f32 = convert %33
        %35:vec4<f32> = construct %25, %28, %31, %34
        store %x_GLF_color, %35
        exit_if  # if_2
      }
      %b10 = block {  # false
        %36:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
        %37:i32 = load %36
        %38:f32 = convert %37
        %39:vec4<f32> = construct %38
        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.  *
********************************************************************
