Revert r330376 "[sanitizer] Generalize atomic_uint8_t, atomic_uint16_t, ... into...
authorHans Wennborg <hans@hanshq.net>
Fri, 20 Apr 2018 07:34:59 +0000 (07:34 +0000)
committerHans Wennborg <hans@hanshq.net>
Fri, 20 Apr 2018 07:34:59 +0000 (07:34 +0000)
This broke the Windows build, see e.g. http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10130

> Differential Revision: https://reviews.llvm.org/D44246

llvm-svn: 330395

compiler-rt/lib/sanitizer_common/sanitizer_atomic.h

index f61efe8..8f400ac 100644 (file)
@@ -27,18 +27,36 @@ enum memory_order {
   memory_order_seq_cst = 1 << 5
 };
 
-template<typename T>
-struct atomic {
-  typedef T Type;
-  volatile Type ALIGNED(sizeof(Type)) val_dont_use;
+struct atomic_uint8_t {
+  typedef u8 Type;
+  volatile Type val_dont_use;
+};
+
+struct atomic_uint16_t {
+  typedef u16 Type;
+  volatile Type val_dont_use;
+};
+
+struct atomic_sint32_t {
+  typedef s32 Type;
+  volatile Type val_dont_use;
 };
 
-typedef atomic<u8> atomic_uint8_t;
-typedef atomic<u16> atomic_uint16_t;
-typedef atomic<s32> atomic_sint32_t;
-typedef atomic<u32> atomic_uint32_t;
-typedef atomic<u64> atomic_uint64_t;
-typedef atomic<uptr> atomic_uintptr_t;
+struct atomic_uint32_t {
+  typedef u32 Type;
+  volatile Type val_dont_use;
+};
+
+struct atomic_uint64_t {
+  typedef u64 Type;
+  // On 32-bit platforms u64 is not necessary aligned on 8 bytes.
+  volatile ALIGNED(8) Type val_dont_use;
+};
+
+struct atomic_uintptr_t {
+  typedef uptr Type;
+  volatile Type val_dont_use;
+};
 
 }  // namespace __sanitizer