SKIP: FAILED

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

$B1: {  # 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)
}

%atomicExchange_f2e22f = func():void {
  $B2: {
    %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 = atomicExchange %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: {
    %11:void = call %atomicExchange_f2e22f
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B4: {
    %13:void = call %atomicExchange_f2e22f
    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.  *
********************************************************************
