SKIP: FAILED

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

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

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