SKIP: FAILED

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

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

%atomicAdd_d32fe4 = func():void -> %b2 {
  %b2 = block {
    %arg_1:ptr<function, i32, read_write> = var, 0i
    %res:ptr<function, i32, read_write> = var, 0i
    store %arg_1, 1i
    %x_20:i32 = load %arg_1
    %6:ptr<storage, atomic<i32>, read_write> = access %sb_rw, 0u
    %x_13:i32 = atomicAdd %6, %x_20
    store %res, %x_13
    ret
  }
}
%fragment_main_1 = func():void -> %b3 {
  %b3 = block {
    %9:void = call %atomicAdd_d32fe4
    ret
  }
}
%fragment_main = @fragment func():void -> %b4 {
  %b4 = block {
    %11:void = call %fragment_main_1
    ret
  }
}
%compute_main_1 = func():void -> %b5 {
  %b5 = block {
    %13:void = call %atomicAdd_d32fe4
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void -> %b6 {
  %b6 = block {
    %15:void = call %compute_main_1
    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.  *
********************************************************************
