SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
  el:u32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_uint_values:array<strided_arr, 1> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:i32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
}

strided_arr_2 = struct @align(4) {
  el:f32 @offset(0)
}

buf2 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr_2, 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_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_10:ptr<uniform, buf2, read> = var @binding_point(0, 2)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %v:ptr<function, vec4<f32>, read_write> = var
    %7:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
    %8:u32 = load %7
    %9:ptr<uniform, u32, read> = access %x_6, 0u, 0i, 0u
    %10:u32 = load %9
    %11:u32 = select %10, 92382u, true
    %12:u32 = div %8, %11
    %13:vec4<f32> = unpack4x8unorm %12
    store %v, %13
    %14:vec4<f32> = load %v
    %15:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %16:i32 = load %15
    %17:f32 = convert %16
    %18:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %19:i32 = load %18
    %20:f32 = convert %19
    %21:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %22:i32 = load %21
    %23:f32 = convert %22
    %24:ptr<uniform, f32, read> = access %x_10, 0u, 1i, 0u
    %25:f32 = load %24
    %26:ptr<uniform, f32, read> = access %x_10, 0u, 2i, 0u
    %27:f32 = load %26
    %28:f32 = div %25, %27
    %29:vec4<f32> = construct %17, %20, %23, %28
    %30:f32 = distance %14, %29
    %31:ptr<uniform, f32, read> = access %x_10, 0u, 0i, 0u
    %32:f32 = load %31
    %33:bool = lt %30, %32
    if %33 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %34:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %35:i32 = load %34
        %36:f32 = convert %35
        %37:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %38:i32 = load %37
        %39:f32 = convert %38
        %40:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %41:i32 = load %40
        %42:f32 = convert %41
        %43:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %44:i32 = load %43
        %45:f32 = convert %44
        %46:vec4<f32> = construct %36, %39, %42, %45
        store %x_GLF_color, %46
        exit_if  # if_1
      }
      %b4 = block {  # false
        %47:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
        %48:i32 = load %47
        %49:f32 = convert %48
        %50:vec4<f32> = construct %49
        store %x_GLF_color, %50
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %52:void = call %main_1
    %53:vec4<f32> = load %x_GLF_color
    %54:main_out = construct %53
    ret %54
  }
}

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