[llvm-commits] [compiler-rt] r159437 - in /compiler-rt/trunk/lib: asan/asan_allocator.cc asan/asan_rtl.cc sanitizer_common/sanitizer_atomic.h sanitizer_common/sanitizer_common.h sanitizer_common/sanitizer_internal_defs.h tsan/rtl/tsan_atomic.h ts
Timur Iskhodzhanov
timurrrr at google.com
Fri Jun 29 10:31:57 PDT 2012
Visual Studio, of course.
2008 on the particular bot in question.
On Fri, Jun 29, 2012 at 10:30 AM, Dmitry Vyukov <dvyukov at google.com> wrote:
> What compiler is used on windows?
>
>
> On Fri, Jun 29, 2012 at 9:18 PM, Timur Iskhodzhanov <timurrrr at google.com>
> wrote:
>>
>> __asm__ has just broken the Windows build of ASan RTL.
>> Please fix or revert
>>
>> On Fri, Jun 29, 2012 at 9:58 AM, Dmitry Vyukov <dvyukov at google.com> wrote:
>> > Author: dvyukov
>> > Date: Fri Jun 29 11:58:33 2012
>> > New Revision: 159437
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=159437&view=rev
>> > Log:
>> > tsan/asan: unify atomics (move atomics from tsan to sanitizer_common)
>> >
>> > Added:
>> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_atomic.h
>> > Removed:
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_atomic.h
>> > Modified:
>> > compiler-rt/trunk/lib/asan/asan_allocator.cc
>> > compiler-rt/trunk/lib/asan/asan_rtl.cc
>> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_defs.h
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_mutex.h
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc
>> > compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h
>> > compiler-rt/trunk/lib/tsan/rtl_tests/tsan_mutex.cc
>> > compiler-rt/trunk/lib/tsan/rtl_tests/tsan_test_util_linux.cc
>> > compiler-rt/trunk/lib/tsan/unit_tests/tsan_mutex_test.cc
>> >
>> > Modified: compiler-rt/trunk/lib/asan/asan_allocator.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/asan/asan_allocator.cc (original)
>> > +++ compiler-rt/trunk/lib/asan/asan_allocator.cc Fri Jun 29 11:58:33
>> > 2012
>> > @@ -34,6 +34,7 @@
>> > #include "asan_stats.h"
>> > #include "asan_thread.h"
>> > #include "asan_thread_registry.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> >
>> > #if defined(_WIN32) && !defined(__clang__)
>> > #include <intrin.h>
>> > @@ -159,8 +160,8 @@
>> > struct ChunkBase {
>> > // First 8 bytes.
>> > uptr chunk_state : 8;
>> > - uptr size_class : 8;
>> > uptr alloc_tid : 24;
>> > + uptr size_class : 8;
>> > uptr free_tid : 24;
>> >
>> > // Second 8 bytes.
>> > @@ -420,7 +421,7 @@
>> >
>> > private:
>> > PageGroup *FindPageGroupUnlocked(uptr addr) {
>> > - int n = n_page_groups_;
>> > + int n = atomic_load(&n_page_groups_, memory_order_relaxed);
>> > // If the page groups are not sorted yet, sort them.
>> > if (n_sorted_page_groups_ < n) {
>> > SortArray((uptr*)page_groups_, n);
>> > @@ -562,9 +563,9 @@
>> > pg->end = pg->beg + mmap_size;
>> > pg->size_of_chunk = size;
>> > pg->last_chunk = (uptr)(mem + size * (n_chunks - 1));
>> > - int page_group_idx = AtomicInc(&n_page_groups_) - 1;
>> > - CHECK(page_group_idx < (int)ASAN_ARRAY_SIZE(page_groups_));
>> > - page_groups_[page_group_idx] = pg;
>> > + int idx = atomic_fetch_add(&n_page_groups_, 1,
>> > memory_order_relaxed);
>> > + CHECK(idx < (int)ASAN_ARRAY_SIZE(page_groups_));
>> > + page_groups_[idx] = pg;
>> > return res;
>> > }
>> >
>> > @@ -573,7 +574,7 @@
>> > AsanLock mu_;
>> >
>> > PageGroup *page_groups_[kMaxAvailableRam / kMinMmapSize];
>> > - int n_page_groups_; // atomic
>> > + atomic_uint32_t n_page_groups_;
>> > int n_sorted_page_groups_;
>> > };
>> >
>> > @@ -721,7 +722,8 @@
>> > AsanChunk *m = PtrToChunk((uptr)ptr);
>> >
>> > // Flip the chunk_state atomically to avoid race on double-free.
>> > - u8 old_chunk_state = AtomicExchange((u8*)m, CHUNK_QUARANTINE);
>> > + u8 old_chunk_state = atomic_exchange((atomic_uint8_t*)m,
>> > CHUNK_QUARANTINE,
>> > + memory_order_acq_rel);
>> >
>> > if (old_chunk_state == CHUNK_QUARANTINE) {
>> > AsanReport("ERROR: AddressSanitizer attempting double-free on
>> > %p:\n", ptr);
>> >
>> > Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)
>> > +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Fri Jun 29 11:58:33 2012
>> > @@ -21,14 +21,15 @@
>> > #include "asan_stats.h"
>> > #include "asan_thread.h"
>> > #include "asan_thread_registry.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "sanitizer_common/sanitizer_libc.h"
>> >
>> > namespace __sanitizer {
>> > using namespace __asan;
>> >
>> > void Die() {
>> > - static int num_calls = 0;
>> > - if (AtomicInc(&num_calls) > 1) {
>> > + static atomic_uint32_t num_calls;
>> > + if (atomic_fetch_add(&num_calls, 1, memory_order_relaxed) != 0) {
>> > // Don't die twice - run a busy loop.
>> > while (1) { }
>> > }
>> > @@ -343,8 +344,8 @@
>> > void __asan_report_error(uptr pc, uptr bp, uptr sp,
>> > uptr addr, bool is_write, uptr access_size) {
>> > // Do not print more than one report, otherwise they will mix up.
>> > - static int num_calls = 0;
>> > - if (AtomicInc(&num_calls) > 1) return;
>> > + static atomic_uint32_t num_calls;
>> > + if (atomic_fetch_add(&num_calls, 1, memory_order_relaxed) != 0)
>> > return;
>> >
>> > AsanPrintf("===================================================="
>> > "=============\n");
>> >
>> > Added: compiler-rt/trunk/lib/sanitizer_common/sanitizer_atomic.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_atomic.h?rev=159437&view=auto
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_atomic.h (added)
>> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_atomic.h Fri Jun 29
>> > 11:58:33 2012
>> > @@ -0,0 +1,153 @@
>> > +//===-- sanitizer_atomic.h --------------------------------------*- C++
>> > -*-===//
>> > +//
>> > +// The LLVM Compiler Infrastructure
>> > +//
>> > +// This file is distributed under the University of Illinois Open
>> > Source
>> > +// License. See LICENSE.TXT for details.
>> > +//
>> >
>> > +//===----------------------------------------------------------------------===//
>> > +
>> > +#ifndef SANITIZER_ATOMIC_H
>> > +#define SANITIZER_ATOMIC_H
>> > +
>> > +#include "sanitizer_internal_defs.h"
>> > +
>> > +namespace __sanitizer {
>> > +
>> > +enum memory_order {
>> > + memory_order_relaxed = 1 << 0,
>> > + memory_order_consume = 1 << 1,
>> > + memory_order_acquire = 1 << 2,
>> > + memory_order_release = 1 << 3,
>> > + memory_order_acq_rel = 1 << 4,
>> > + memory_order_seq_cst = 1 << 5,
>> > +};
>> > +
>> > +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_uint32_t {
>> > + typedef u32 Type;
>> > + volatile Type val_dont_use;
>> > +};
>> > +
>> > +struct atomic_uint64_t {
>> > + typedef u64 Type;
>> > + volatile Type val_dont_use;
>> > +};
>> > +
>> > +struct atomic_uintptr_t {
>> > + typedef uptr Type;
>> > + volatile Type val_dont_use;
>> > +};
>> > +
>> > +INLINE void atomic_signal_fence(memory_order) {
>> > + __asm__ __volatile__("" ::: "memory");
>> > +}
>> > +
>> > +INLINE void atomic_thread_fence(memory_order) {
>> > + __sync_synchronize();
>> > +}
>> > +
>> > +INLINE void proc_yield(int cnt) {
>> > + __asm__ __volatile__("" ::: "memory");
>> > +#if defined(__i386__) || defined(__x86_64__)
>> > + for (int i = 0; i < cnt; i++)
>> > + __asm__ __volatile__("pause");
>> > +#endif
>> > + __asm__ __volatile__("" ::: "memory");
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE typename T::Type atomic_load(
>> > + const volatile T *a, memory_order mo) {
>> > + DCHECK(mo & (memory_order_relaxed | memory_order_consume
>> > + | memory_order_acquire | memory_order_seq_cst));
>> > + DCHECK(!((uptr)a % sizeof(*a)));
>> > + typename T::Type v;
>> > + if (mo == memory_order_relaxed) {
>> > + v = a->val_dont_use;
>> > + } else {
>> > + atomic_signal_fence(memory_order_seq_cst);
>> > + v = a->val_dont_use;
>> > + atomic_signal_fence(memory_order_seq_cst);
>> > + }
>> > + return v;
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE void atomic_store(volatile T *a, typename T::Type v,
>> > memory_order mo) {
>> > + DCHECK(mo & (memory_order_relaxed | memory_order_release
>> > + | memory_order_seq_cst));
>> > + DCHECK(!((uptr)a % sizeof(*a)));
>> > + if (mo == memory_order_relaxed) {
>> > + a->val_dont_use = v;
>> > + } else {
>> > + atomic_signal_fence(memory_order_seq_cst);
>> > + a->val_dont_use = v;
>> > + atomic_signal_fence(memory_order_seq_cst);
>> > + }
>> > + if (mo == memory_order_seq_cst)
>> > + atomic_thread_fence(memory_order_seq_cst);
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE typename T::Type atomic_fetch_add(volatile T *a,
>> > + typename T::Type v, memory_order mo) {
>> > + (void)mo;
>> > + DCHECK(!((uptr)a % sizeof(*a)));
>> > + return __sync_fetch_and_add(&a->val_dont_use, v);
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE typename T::Type atomic_fetch_sub(volatile T *a,
>> > + typename T::Type v, memory_order mo) {
>> > + (void)mo;
>> > + DCHECK(!((uptr)a % sizeof(*a)));
>> > + return __sync_fetch_and_add(&a->val_dont_use, -v);
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE typename T::Type atomic_exchange(volatile T *a,
>> > + typename T::Type v, memory_order mo) {
>> > + DCHECK(!((uptr)a % sizeof(*a)));
>> > + if (mo & (memory_order_release | memory_order_acq_rel |
>> > memory_order_seq_cst))
>> > + __sync_synchronize();
>> > + v = __sync_lock_test_and_set(&a->val_dont_use, v);
>> > + if (mo == memory_order_seq_cst)
>> > + __sync_synchronize();
>> > + return v;
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE bool atomic_compare_exchange_strong(volatile T *a,
>> > + typename T::Type *cmp,
>> > + typename T::Type xchg,
>> > + memory_order mo) {
>> > + typedef typename T::Type Type;
>> > + Type cmpv = *cmp;
>> > + Type prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv,
>> > xchg);
>> > + if (prev == cmpv)
>> > + return true;
>> > + *cmp = prev;
>> > + return false;
>> > +}
>> > +
>> > +template<typename T>
>> > +INLINE bool atomic_compare_exchange_weak(volatile T *a,
>> > + typename T::Type *cmp,
>> > + typename T::Type xchg,
>> > + memory_order mo) {
>> > + return atomic_compare_exchange_strong(a, cmp, xchg, mo);
>> > +}
>> > +
>> > +} // namespace __sanitizer
>> > +
>> > +#endif // SANITIZER_ATOMIC_H
>> >
>> > Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
>> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Jun 29
>> > 11:58:33 2012
>> > @@ -77,11 +77,6 @@
>> > int Atexit(void (*function)(void));
>> > void SortArray(uptr *array, uptr size);
>> >
>> > -// Atomics
>> > -int AtomicInc(int *a);
>> > -u16 AtomicExchange(u16 *a, u16 new_val);
>> > -u8 AtomicExchange(u8 *a, u8 new_val);
>> > -
>> > // Math
>> > inline bool IsPowerOfTwo(uptr x) {
>> > return (x & (x - 1)) == 0;
>> >
>> > Modified:
>> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h
>> > (original)
>> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.h Fri
>> > Jun 29 11:58:33 2012
>> > @@ -112,6 +112,24 @@
>> > #define CHECK_GT(a, b) CHECK_IMPL((a), >, (b))
>> > #define CHECK_GE(a, b) CHECK_IMPL((a), >=, (b))
>> >
>> > +#if TSAN_DEBUG
>> > +#define DCHECK(a) CHECK(a)
>> > +#define DCHECK_EQ(a, b) CHECK_EQ(a, b)
>> > +#define DCHECK_NE(a, b) CHECK_NE(a, b)
>> > +#define DCHECK_LT(a, b) CHECK_LT(a, b)
>> > +#define DCHECK_LE(a, b) CHECK_LE(a, b)
>> > +#define DCHECK_GT(a, b) CHECK_GT(a, b)
>> > +#define DCHECK_GE(a, b) CHECK_GE(a, b)
>> > +#else
>> > +#define DCHECK(a)
>> > +#define DCHECK_EQ(a, b)
>> > +#define DCHECK_NE(a, b)
>> > +#define DCHECK_LT(a, b)
>> > +#define DCHECK_LE(a, b)
>> > +#define DCHECK_GT(a, b)
>> > +#define DCHECK_GE(a, b)
>> > +#endif
>> > +
>> > #define UNIMPLEMENTED() CHECK("unimplemented" && 0)
>> >
>> > #define COMPILER_CHECK(pred) IMPL_COMPILER_ASSERT(pred, __LINE__)
>> >
>> > Removed: compiler-rt/trunk/lib/tsan/rtl/tsan_atomic.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_atomic.h?rev=159436&view=auto
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_atomic.h (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_atomic.h (removed)
>> > @@ -1,140 +0,0 @@
>> > -//===-- tsan_rtl.h ----------------------------------------------*- C++
>> > -*-===//
>> > -//
>> > -// The LLVM Compiler Infrastructure
>> > -//
>> > -// This file is distributed under the University of Illinois Open
>> > Source
>> > -// License. See LICENSE.TXT for details.
>> > -//
>> >
>> > -//===----------------------------------------------------------------------===//
>> > -//
>> > -// This file is a part of ThreadSanitizer (TSan), a race detector.
>> > -//
>> > -// Atomic operations. For now implies IA-32/Intel64.
>> >
>> > -//===----------------------------------------------------------------------===//
>> > -
>> > -#ifndef TSAN_ATOMIC_H
>> > -#define TSAN_ATOMIC_H
>> > -
>> > -#include "tsan_defs.h"
>> > -
>> > -namespace __tsan {
>> > -
>> > -const int kCacheLineSize = 64;
>> > -
>> > -enum memory_order {
>> > - memory_order_relaxed = 1 << 0,
>> > - memory_order_consume = 1 << 1,
>> > - memory_order_acquire = 1 << 2,
>> > - memory_order_release = 1 << 3,
>> > - memory_order_acq_rel = 1 << 4,
>> > - memory_order_seq_cst = 1 << 5,
>> > -};
>> > -
>> > -struct atomic_uint32_t {
>> > - typedef u32 Type;
>> > - volatile Type val_dont_use;
>> > -};
>> > -
>> > -struct atomic_uint64_t {
>> > - typedef u64 Type;
>> > - volatile Type val_dont_use;
>> > -};
>> > -
>> > -struct atomic_uintptr_t {
>> > - typedef uptr Type;
>> > - volatile Type val_dont_use;
>> > -};
>> > -
>> > -INLINE void atomic_signal_fence(memory_order) {
>> > - __asm__ __volatile__("" ::: "memory");
>> > -}
>> > -
>> > -INLINE void atomic_thread_fence(memory_order) {
>> > - __asm__ __volatile__("mfence" ::: "memory");
>> > -}
>> > -
>> > -INLINE void proc_yield(int cnt) {
>> > - __asm__ __volatile__("" ::: "memory");
>> > - for (int i = 0; i < cnt; i++)
>> > - __asm__ __volatile__("pause");
>> > - __asm__ __volatile__("" ::: "memory");
>> > -}
>> > -
>> > -template<typename T>
>> > -INLINE typename T::Type atomic_load(
>> > - const volatile T *a, memory_order mo) {
>> > - DCHECK(mo & (memory_order_relaxed | memory_order_consume
>> > - | memory_order_acquire | memory_order_seq_cst));
>> > - DCHECK(!((uptr)a % sizeof(*a)));
>> > - typename T::Type v;
>> > - if (mo == memory_order_relaxed) {
>> > - v = a->val_dont_use;
>> > - } else {
>> > - atomic_signal_fence(memory_order_seq_cst);
>> > - v = a->val_dont_use;
>> > - atomic_signal_fence(memory_order_seq_cst);
>> > - }
>> > - return v;
>> > -}
>> > -
>> > -template<typename T>
>> > -INLINE void atomic_store(volatile T *a, typename T::Type v,
>> > memory_order mo) {
>> > - DCHECK(mo & (memory_order_relaxed | memory_order_release
>> > - | memory_order_seq_cst));
>> > - DCHECK(!((uptr)a % sizeof(*a)));
>> > - if (mo == memory_order_relaxed) {
>> > - a->val_dont_use = v;
>> > - } else {
>> > - atomic_signal_fence(memory_order_seq_cst);
>> > - a->val_dont_use = v;
>> > - atomic_signal_fence(memory_order_seq_cst);
>> > - }
>> > - if (mo == memory_order_seq_cst)
>> > - atomic_thread_fence(memory_order_seq_cst);
>> > -}
>> > -
>> > -template<typename T>
>> > -INLINE typename T::Type atomic_fetch_add(volatile T *a,
>> > - typename T::Type v, memory_order mo) {
>> > - (void)mo;
>> > - DCHECK(!((uptr)a % sizeof(*a)));
>> > - return __sync_fetch_and_add(&a->val_dont_use, v);
>> > -}
>> > -
>> > -template<typename T>
>> > -INLINE typename T::Type atomic_fetch_sub(volatile T *a,
>> > - typename T::Type v, memory_order mo) {
>> > - (void)mo;
>> > - DCHECK(!((uptr)a % sizeof(*a)));
>> > - return __sync_fetch_and_add(&a->val_dont_use, -v);
>> > -}
>> > -
>> > -INLINE uptr atomic_exchange(volatile atomic_uintptr_t *a, uptr v,
>> > - memory_order mo) {
>> > - __asm__ __volatile__("xchg %1, %0" : "+r"(v), "+m"(*a) : : "memory",
>> > "cc");
>> > - return v;
>> > -}
>> > -
>> > -template<typename T>
>> > -INLINE bool atomic_compare_exchange_strong(volatile T *a,
>> > - typename T::Type *cmp,
>> > - typename T::Type xchg,
>> > - memory_order mo) {
>> > - typedef typename T::Type Type;
>> > - Type cmpv = *cmp;
>> > - Type prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv,
>> > xchg);
>> > - if (prev == cmpv)
>> > - return true;
>> > - *cmp = prev;
>> > - return false;
>> > -}
>> > -
>> > -INLINE bool atomic_compare_exchange_weak(volatile atomic_uintptr_t *a,
>> > - uptr *cmp, uptr xchg,
>> > - memory_order mo) {
>> > - return atomic_compare_exchange_strong(a, cmp, xchg, mo);
>> > -}
>> > -
>> > -} // namespace __tsan
>> > -
>> > -#endif // TSAN_ATOMIC_H
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_defs.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_defs.h?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_defs.h (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_defs.h Fri Jun 29 11:58:33 2012
>> > @@ -54,24 +54,6 @@
>> > const bool kCollectStats = false;
>> > #endif
>> >
>> > -#if TSAN_DEBUG
>> > -#define DCHECK(a) CHECK(a)
>> > -#define DCHECK_EQ(a, b) CHECK_EQ(a, b)
>> > -#define DCHECK_NE(a, b) CHECK_NE(a, b)
>> > -#define DCHECK_LT(a, b) CHECK_LT(a, b)
>> > -#define DCHECK_LE(a, b) CHECK_LE(a, b)
>> > -#define DCHECK_GT(a, b) CHECK_GT(a, b)
>> > -#define DCHECK_GE(a, b) CHECK_GE(a, b)
>> > -#else
>> > -#define DCHECK(a)
>> > -#define DCHECK_EQ(a, b)
>> > -#define DCHECK_NE(a, b)
>> > -#define DCHECK_LT(a, b)
>> > -#define DCHECK_LE(a, b)
>> > -#define DCHECK_GT(a, b)
>> > -#define DCHECK_GE(a, b)
>> > -#endif
>> > -
>> > // The following "build consistency" machinery ensures that all source
>> > files
>> > // are built in the same configuration. Inconsistent builds lead to
>> > // hard to debug crashes.
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Fri Jun 29
>> > 11:58:33 2012
>> > @@ -12,11 +12,11 @@
>> >
>> > //===----------------------------------------------------------------------===//
>> >
>> > #include "interception/interception.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "sanitizer_common/sanitizer_libc.h"
>> > #include "sanitizer_common/sanitizer_placement_new.h"
>> > #include "tsan_rtl.h"
>> > #include "tsan_interface.h"
>> > -#include "tsan_atomic.h"
>> > #include "tsan_platform.h"
>> > #include "tsan_mman.h"
>> >
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_mutex.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_mutex.h?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_mutex.h (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_mutex.h Fri Jun 29 11:58:33 2012
>> > @@ -13,7 +13,7 @@
>> > #ifndef TSAN_MUTEX_H
>> > #define TSAN_MUTEX_H
>> >
>> > -#include "tsan_atomic.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "tsan_defs.h"
>> >
>> > namespace __tsan {
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc Fri Jun 29 11:58:33 2012
>> > @@ -12,6 +12,7 @@
>> > // Main file (entry points) for the TSan run-time.
>> >
>> > //===----------------------------------------------------------------------===//
>> >
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "sanitizer_common/sanitizer_common.h"
>> > #include "sanitizer_common/sanitizer_libc.h"
>> > #include "sanitizer_common/sanitizer_placement_new.h"
>> > @@ -19,7 +20,6 @@
>> > #include "tsan_platform.h"
>> > #include "tsan_rtl.h"
>> > #include "tsan_interface.h"
>> > -#include "tsan_atomic.h"
>> > #include "tsan_mman.h"
>> > #include "tsan_suppressions.h"
>> >
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h Fri Jun 29 11:58:33 2012
>> > @@ -13,7 +13,8 @@
>> > #ifndef TSAN_SYNC_H
>> > #define TSAN_SYNC_H
>> >
>> > -#include "tsan_atomic.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > +#include "sanitizer_common/sanitizer_common.h"
>> > #include "tsan_clock.h"
>> > #include "tsan_defs.h"
>> > #include "tsan_mutex.h"
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl_tests/tsan_mutex.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl_tests/tsan_mutex.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl_tests/tsan_mutex.cc (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl_tests/tsan_mutex.cc Fri Jun 29
>> > 11:58:33 2012
>> > @@ -10,7 +10,7 @@
>> > // This file is a part of ThreadSanitizer (TSan), a race detector.
>> > //
>> >
>> > //===----------------------------------------------------------------------===//
>> > -#include "tsan_atomic.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "tsan_interface.h"
>> > #include "tsan_interface_ann.h"
>> > #include "tsan_test_util.h"
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/rtl_tests/tsan_test_util_linux.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl_tests/tsan_test_util_linux.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/rtl_tests/tsan_test_util_linux.cc
>> > (original)
>> > +++ compiler-rt/trunk/lib/tsan/rtl_tests/tsan_test_util_linux.cc Fri Jun
>> > 29 11:58:33 2012
>> > @@ -1,3 +1,4 @@
>> > +
>> > //===-- tsan_test_util_linux.cc
>> > -------------------------------------------===//
>> > //
>> > // The LLVM Compiler Infrastructure
>> > @@ -12,9 +13,9 @@
>> > // Test utils, linux implementation.
>> >
>> > //===----------------------------------------------------------------------===//
>> >
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > #include "tsan_interface.h"
>> > #include "tsan_test_util.h"
>> > -#include "tsan_atomic.h"
>> > #include "tsan_report.h"
>> >
>> > #include "gtest/gtest.h"
>> >
>> > Modified: compiler-rt/trunk/lib/tsan/unit_tests/tsan_mutex_test.cc
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/unit_tests/tsan_mutex_test.cc?rev=159437&r1=159436&r2=159437&view=diff
>> >
>> > ==============================================================================
>> > --- compiler-rt/trunk/lib/tsan/unit_tests/tsan_mutex_test.cc (original)
>> > +++ compiler-rt/trunk/lib/tsan/unit_tests/tsan_mutex_test.cc Fri Jun 29
>> > 11:58:33 2012
>> > @@ -11,7 +11,8 @@
>> > //
>> >
>> > //===----------------------------------------------------------------------===//
>> > #include "sanitizer_common/sanitizer_internal_defs.h"
>> > -#include "tsan_atomic.h"
>> > +#include "sanitizer_common/sanitizer_atomic.h"
>> > +#include "sanitizer_common/sanitizer_common.h"
>> > #include "tsan_mutex.h"
>> > #include "gtest/gtest.h"
>> >
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
More information about the llvm-commits
mailing list