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, 4> @offset(0)
}

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

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

%main_1 = func():void -> %b2 {
  %b2 = block {
    %m:ptr<function, mat3x3<f32>, read_write> = var
    %a:ptr<function, i32, read_write> = var
    %arr:ptr<function, array<vec3<f32>, 2>, read_write> = var
    %v:ptr<function, vec3<f32>, read_write> = var
    %9:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %10:i32 = load %9
    %x_46:f32 = convert %10
    %12:vec3<f32> = construct %x_46, 0.0f, 0.0f
    %13:vec3<f32> = construct 0.0f, %x_46, 0.0f
    %14:vec3<f32> = construct 0.0f, 0.0f, %x_46
    %15:mat3x3<f32> = construct %12, %13, %14
    store %m, %15
    %16:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %17:i32 = load %16
    store %a, %17
    %x_53:i32 = load %a
    %x_54:i32 = load %a
    %20:ptr<function, vec3<f32>, read_write> = access %m, %x_53
    %21:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
    %22:f32 = load %21
    store_vector_element %20, %x_54, %22
    %23:ptr<function, vec3<f32>, read_write> = access %m, 1i
    %24:vec3<f32> = load %23
    %25:ptr<function, vec3<f32>, read_write> = access %m, 1i
    %26:vec3<f32> = load %25
    %27:array<vec3<f32>, 2> = construct %24, %26
    store %arr, %27
    %28:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
    %29:f32 = load %28
    %30:vec3<f32> = construct %29
    store %v, %30
    %31:vec3<f32> = load %v
    %32:i32 = load %a
    %33:ptr<function, vec3<f32>, read_write> = access %arr, %32
    %34:vec3<f32> = load %33
    %35:vec3<f32> = add %31, %34
    store %v, %35
    %36:vec3<f32> = load %v
    %37:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %38:i32 = load %37
    %39:f32 = convert %38
    %40:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %41:i32 = load %40
    %42:f32 = convert %41
    %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %44:i32 = load %43
    %45:f32 = convert %44
    %46:vec3<f32> = construct %39, %42, %45
    %47:vec3<bool> = eq %36, %46
    %48:bool = all %47
    if %48 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %49:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %50:i32 = load %49
        %51:f32 = convert %50
        %52:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %53:i32 = load %52
        %54:f32 = convert %53
        %55:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %56:i32 = load %55
        %57:f32 = convert %56
        %58:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %59:i32 = load %58
        %60:f32 = convert %59
        %61:vec4<f32> = construct %51, %54, %57, %60
        store %x_GLF_color, %61
        exit_if  # if_1
      }
      %b4 = block {  # false
        %62:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %63:i32 = load %62
        %64:f32 = convert %63
        %65:vec4<f32> = construct %64
        store %x_GLF_color, %65
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %67:void = call %main_1
    %68:vec4<f32> = load %x_GLF_color
    %69:main_out = construct %68
    ret %69
  }
}

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