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, 2> @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 {
    %v:ptr<function, vec4<f32>, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %x_25:i32 = load %5
    %7:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %x_28:i32 = load %7
    %9:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %x_31:i32 = load %9
    %11:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %x_34:i32 = load %11
    %13:f32 = convert %x_25
    %14:f32 = convert %x_28
    %15:f32 = convert %x_31
    %16:f32 = convert %x_34
    %17:vec4<f32> = construct %13, %14, %15, %16
    store %x_GLF_color, %17
    %x_37:vec4<f32> = load %x_GLF_color
    store %v, %x_37
    store %x_GLF_color, vec4<f32>(0.0f)
    %x_38:vec4<f32> = load %v
    store %x_GLF_color, %x_38
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b3 {
  %b3 = block {
    %21:void = call %main_1
    %22:vec4<f32> = load %x_GLF_color
    %23:main_out = construct %22
    ret %23
  }
}

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