SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: __atomic_compare_exchange_result_i32 = struct @align(4) {
  old_value:i32 @offset(0)
  exchanged:bool @offset(4)
}

$B1: {  # root
  %a:ptr<storage, atomic<i32>, read_write> = var @binding_point(0, 0)
  %continue_execution:ptr<private, bool, read_write> = var, true
}

%foo = @fragment func():i32 [@location(0)] {
  $B2: {
    store %continue_execution, false
    %x:ptr<function, i32, read_write> = var, 0i
    %5:bool = load %continue_execution
    %6:__atomic_compare_exchange_result_i32 = if %5 [t: $B3] {  # if_1
      $B3: {  # true
        %7:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %a, 0i, 1i
        exit_if %7  # if_1
      }
      # implicit false block: exit_if undef
    }
    %result:__atomic_compare_exchange_result_i32 = let %6
    %9:bool = access %result, 1u
    if %9 [t: $B4] {  # if_2
      $B4: {  # true
        %10:i32 = access %result, 0u
        store %x, %10
        exit_if  # if_2
      }
    }
    %11:i32 = load %x
    %12:bool = load %continue_execution
    %13:bool = eq %12, false
    if %13 [t: $B5] {  # if_3
      $B5: {  # true
        terminate_invocation
      }
    }
    ret %11
  }
}

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.  *
********************************************************************
