SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: S = struct @align(16) {
  arr:array<vec4<i32>, 4> @offset(0)
}

%b1 = block {  # root
  %src_private:ptr<private, array<vec4<i32>, 4>, read_write> = var
  %src_workgroup:ptr<workgroup, array<vec4<i32>, 4>, read_write> = var
  %src_uniform:ptr<uniform, S, read> = var @binding_point(0, 0)
  %src_storage:ptr<storage, S, read_write> = var @binding_point(0, 1)
}

%ret_arr = func():array<vec4<i32>, 4> -> %b2 {
  %b2 = block {
    ret array<vec4<i32>, 4>(vec4<i32>(0i))
  }
}
%ret_struct_arr = func():S -> %b3 {
  %b3 = block {
    ret S(array<vec4<i32>, 4>(vec4<i32>(0i)))
  }
}
%foo = func(%src_param:array<vec4<i32>, 4>):void -> %b4 {
  %b4 = block {
    %src_function:ptr<function, array<vec4<i32>, 4>, read_write> = var
    %dst:ptr<function, array<vec4<i32>, 4>, read_write> = var
    store %dst, array<vec4<i32>, 4>(vec4<i32>(1i), vec4<i32>(2i), vec4<i32>(3i), vec4<i32>(3i))
    store %dst, %src_param
    %11:array<vec4<i32>, 4> = call %ret_arr
    store %dst, %11
    %src_let:array<vec4<i32>, 4> = let array<vec4<i32>, 4>(vec4<i32>(0i))
    store %dst, %src_let
    %13:array<vec4<i32>, 4> = load %src_function
    store %dst, %13
    %14:array<vec4<i32>, 4> = load %src_private
    store %dst, %14
    %15:array<vec4<i32>, 4> = load %src_workgroup
    store %dst, %15
    %16:S = call %ret_struct_arr
    %17:array<vec4<i32>, 4> = access %16, 0u
    store %dst, %17
    %18:ptr<uniform, array<vec4<i32>, 4>, read> = access %src_uniform, 0u
    %19:array<vec4<i32>, 4> = load %18
    store %dst, %19
    %20:ptr<storage, array<vec4<i32>, 4>, read_write> = access %src_storage, 0u
    %21:array<vec4<i32>, 4> = load %20
    store %dst, %21
    %dst_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
    %src_nested:ptr<function, array<array<array<i32, 2>, 3>, 4>, read_write> = var
    %24:array<array<array<i32, 2>, 3>, 4> = load %src_nested
    store %dst_nested, %24
    ret
  }
}

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