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)
}

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