|  | //===- llvm/Support/Atomic.h - Atomic Operations -----------------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file declares the llvm::sys atomic operations. | 
|  | // | 
|  | // DO NOT USE IN NEW CODE! | 
|  | // | 
|  | // New code should always rely on the std::atomic facilities in C++11. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_SUPPORT_ATOMIC_H | 
|  | #define LLVM_SUPPORT_ATOMIC_H | 
|  |  | 
|  | #include "llvm/Support/DataTypes.h" | 
|  |  | 
|  | namespace llvm { | 
|  | namespace sys { | 
|  | void MemoryFence(); | 
|  |  | 
|  | #ifdef _MSC_VER | 
|  | typedef long cas_flag; | 
|  | #else | 
|  | typedef uint32_t cas_flag; | 
|  | #endif | 
|  | cas_flag CompareAndSwap(volatile cas_flag* ptr, | 
|  | cas_flag new_value, | 
|  | cas_flag old_value); | 
|  | } | 
|  | } | 
|  |  | 
|  | #endif |