diff --git a/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp b/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp index d12e0f596a7fb..dd37e86ebd758 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp @@ -515,7 +515,9 @@ static morder to_morder(int mo) { // since we use __sync_ atomics for actual atomic operations, // we can safely ignore it as well. It also subtly affects semantics, // but we don't model the difference. - return static_cast(mo & 0x7fff); + morder res = static_cast(static_cast(mo)); + DCHECK_LE(res, mo_seq_cst); + return res; } # define ATOMIC_IMPL(func, mo, ...) \