SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %arg_0:ptr<workgroup, atomic<u32>, read_write> = var
  %prevent_dce:ptr<storage, u32, read_write> = var @binding_point(2, 0)
}

%atomicExchange_0a5dca = func():void {
  $B2: {
    %arg_1:ptr<function, u32, read_write> = var, 1u
    %5:u32 = load %arg_1
    %6:u32 = atomicExchange %arg_0, %5
    %res:ptr<function, u32, read_write> = var, %6
    %8:u32 = load %res
    store %prevent_dce, %8
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func(%tint_local_index:u32 [@local_invocation_index]):void {
  $B3: {
    %11:bool = eq %tint_local_index, 0u
    if %11 [t: $B4] {  # if_1
      $B4: {  # true
        %12:void = atomicStore %arg_0, 0u
        exit_if  # if_1
      }
    }
    %13:void = msl.threadgroup_barrier 4u
    %14:void = call %atomicExchange_0a5dca
    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.  *
********************************************************************
