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

%main_1 = func():void -> %b2 {
  %b2 = block {
    %x_32_phi:ptr<function, i32, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %x_24:i32 = load %5
    %x_25:f32 = convert %x_24
    %8:vec4<f32> = construct %x_25, %x_25, %x_25, %x_25
    store %x_GLF_color, %8
    %9:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %x_28:i32 = load %9
    %11:u32 = bitcast %x_28
    %12:i32 = shiftl %x_28, %11
    %x_30:i32 = shiftr %12, 1u
    store %x_32_phi, %x_24
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_32:i32 = load %x_32_phi
        %15:bool = lt %x_30, 10i
        if %15 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_33:ptr<function, i32, read_write> = var
        %17:i32 = add %x_32, 1i
        store %x_33, %17
        %18:ptr<uniform, i32, read> = access %x_5, 0u, 2i, 0u
        %x_39:i32 = load %18
        %20:i32 = load %x_33
        %21:i32 = bitcast %x_39
        %22:bool = eq %20, %21
        if %22 [t: %b7] {  # if_2
          %b7 = block {  # true
            %x_43:f32 = convert %x_28
            %24:vec4<f32> = construct %x_43, %x_25, %x_25, %x_43
            store %x_GLF_color, %24
            exit_loop  # loop_1
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %25:i32 = load %x_33
        store %x_32_phi, %25
        next_iteration %b3
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b8 {
  %b8 = block {
    %27:void = call %main_1
    %28:vec4<f32> = load %x_GLF_color
    %29:main_out = construct %28
    ret %29
  }
}

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