typedef int __tsan_atomic32;
typedef long __tsan_atomic64; // NOLINT
-#if (defined(__clang__) && defined(__clang_major__) \
- && defined(__clang_minor__) && __clang__ >= 1 && __clang_major__ >= 3 \
- && __clang_minor__ >= 3) \
- || (defined(__GNUC__) && defined(__GNUC_MINOR__) \
- && defined(__GNUC_PATCHLEVEL__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 6 \
- && __GNUC_PATCHLEVEL__ >= 3)
+#if defined(__SIZEOF_INT128__) \
+ || (__clang_major__ * 100 + __clang_minor__ >= 302)
typedef __int128 __tsan_atomic128;
#define __TSAN_HAS_INT128 1
#else