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, 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: {  # 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: {
    %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
    %11:f32 = convert %10
    %x_46:f32 = let %11
    %13:vec3<f32> = construct %x_46, 0.0f, 0.0f
    %14:vec3<f32> = let %13
    %15:vec3<f32> = construct 0.0f, %x_46, 0.0f
    %16:vec3<f32> = let %15
    %17:vec3<f32> = construct 0.0f, 0.0f, %x_46
    %18:mat3x3<f32> = construct %14, %16, %17
    store %m, %18
    %19:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %20:i32 = load %19
    store %a, %20
    %21:i32 = load %a
    %x_53:i32 = let %21
    %23:i32 = load %a
    %x_54:i32 = let %23
    %25:ptr<function, vec3<f32>, read_write> = access %m, %x_53
    %26:ptr<uniform, f32, read> = access %x_9, 0u, 0i, 0u
    %27:f32 = load %26
    store_vector_element %25, %x_54, %27
    %28:ptr<function, vec3<f32>, read_write> = access %m, 1i
    %29:vec3<f32> = load %28
    %30:ptr<function, vec3<f32>, read_write> = access %m, 1i
    %31:vec3<f32> = load %30
    %32:array<vec3<f32>, 2> = construct %29, %31
    store %arr, %32
    %33:ptr<uniform, f32, read> = access %x_9, 0u, 1i, 0u
    %34:f32 = load %33
    %35:vec3<f32> = construct %34
    store %v, %35
    %36:vec3<f32> = load %v
    %37:i32 = load %a
    %38:ptr<function, vec3<f32>, read_write> = access %arr, %37
    %39:vec3<f32> = load %38
    %40:vec3<f32> = add %36, %39
    store %v, %40
    %41:vec3<f32> = load %v
    %42:vec3<f32> = let %41
    %43:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %44:i32 = load %43
    %45:f32 = convert %44
    %46:f32 = let %45
    %47:ptr<uniform, i32, read> = access %x_6, 0u, 2i, 0u
    %48:i32 = load %47
    %49:f32 = convert %48
    %50:f32 = let %49
    %51:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
    %52:i32 = load %51
    %53:f32 = convert %52
    %54:vec3<f32> = construct %46, %50, %53
    %55:vec3<bool> = eq %42, %54
    %56:bool = all %55
    if %56 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %57:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %58:i32 = load %57
        %59:f32 = convert %58
        %60:f32 = let %59
        %61:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %62:i32 = load %61
        %63:f32 = convert %62
        %64:f32 = let %63
        %65:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %66:i32 = load %65
        %67:f32 = convert %66
        %68:f32 = let %67
        %69:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %70:i32 = load %69
        %71:f32 = convert %70
        %72:vec4<f32> = construct %60, %64, %68, %71
        store %x_GLF_color, %72
        exit_if  # if_1
      }
      $B4: {  # false
        %73:ptr<uniform, i32, read> = access %x_6, 0u, 3i, 0u
        %74:i32 = load %73
        %75:f32 = convert %74
        %76:vec4<f32> = construct %75
        store %x_GLF_color, %76
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %78:void = call %main_1
    %79:vec4<f32> = load %x_GLF_color
    %80:main_out = construct %79
    ret %80
  }
}

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