Fix data race in X86FloatingPoint.cpp ASSERT_SORTED
authorBob Haarman <llvm@inglorion.net>
Wed, 18 Apr 2018 23:04:09 +0000 (23:04 +0000)
committerBob Haarman <llvm@inglorion.net>
Wed, 18 Apr 2018 23:04:09 +0000 (23:04 +0000)
commitcb80a3fce0708d48f50606b0203b2dc0326270bc
tree965434cc2f2440a3398f6142037384f740a3c2bc
parent8f1a28f1902806077c95ff8292192e8d6d3fa821
Fix data race in X86FloatingPoint.cpp ASSERT_SORTED

Summary:
ASSERT_SORTED checks if a table is sorted, and uses a boolean to
prevent the check from being run again if it was earlier determined
that the table is in fact sorted. Unsynchronized reads and writes of
that boolean triggered ThreadSanitizer's data race detection. This
change rewrites the code to use std::atomic<bool> instead.

Fixes PR36922.

Reviewers: rnk

Reviewed By: rnk

Subscribers: llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D45742

llvm-svn: 330301
llvm/lib/Target/X86/X86FloatingPoint.cpp