SKIP: FAILED

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

%b1 = block {  # root
  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
}

%foo = func():i32 -> %b2 {
  %b2 = block {
    %src:array<i32, 4> = let array<i32, 4>(0i)
    %dst:ptr<function, array<i32, 4>, read_write> = var
    %dst_struct:ptr<function, S, read_write> = var
    %dst_array:ptr<function, array<array<i32, 4>, 2>, read_write> = var
    %dst_ptr:ptr<function, array<i32, 4>, read_write> = let %dst
    %dst_struct_ptr:ptr<function, S, read_write> = let %dst_struct
    %dst_array_ptr:ptr<function, array<array<i32, 4>, 2>, read_write> = let %dst_array
    %10:ptr<function, array<i32, 4>, read_write> = access %dst_struct, 0u
    store %10, %src
    %11:ptr<function, array<i32, 4>, read_write> = access %dst_array, 1i
    store %11, %src
    store %dst_ptr, %src
    %12:ptr<function, array<i32, 4>, read_write> = access %dst_struct_ptr, 0u
    store %12, %src
    %13:ptr<function, array<i32, 4>, read_write> = access %dst_array_ptr, 0i
    store %13, %src
    %14:ptr<function, i32, read_write> = access %dst_ptr, 0i
    %15:i32 = load %14
    %16:ptr<function, i32, read_write> = access %dst_struct_ptr, 0u, 0i
    %17:i32 = load %16
    %18:i32 = add %15, %17
    %19:ptr<function, i32, read_write> = access %dst_array_ptr, 0i, 0i
    %20:i32 = load %19
    %21:i32 = add %18, %20
    ret %21
  }
}
%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void -> %b3 {
  %b3 = block {
    %23:i32 = call %foo
    store %s, %23
    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.  *
********************************************************************
