SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    %v:ptr<function, vec4<f32>, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %6:i32 = load %5
    %x_25:i32 = let %6
    %8:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %9:i32 = load %8
    %x_28:i32 = let %9
    %11:ptr<uniform, i32, read> = access %x_5, 0u, 1i, 0u
    %12:i32 = load %11
    %x_31:i32 = let %12
    %14:ptr<uniform, i32, read> = access %x_5, 0u, 0i, 0u
    %15:i32 = load %14
    %x_34:i32 = let %15
    %17:f32 = convert %x_25
    %18:f32 = let %17
    %19:f32 = convert %x_28
    %20:f32 = let %19
    %21:f32 = convert %x_31
    %22:f32 = let %21
    %23:f32 = convert %x_34
    %24:vec4<f32> = construct %18, %20, %22, %23
    store %x_GLF_color, %24
    %25:vec4<f32> = load %x_GLF_color
    %x_37:vec4<f32> = let %25
    store %v, %x_37
    store %x_GLF_color, vec4<f32>(0.0f)
    %27:vec4<f32> = load %v
    %x_38:vec4<f32> = let %27
    store %x_GLF_color, %x_38
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B3: {
    %30:void = call %main_1
    %31:vec4<f32> = load %x_GLF_color
    %32:main_out = construct %31
    ret %32
  }
}

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