Fix a data race found by tsan.
Reads from `Live` and writes to `OutputOff` in the following code race even though they are logically independent because they are bitfields sharing the same word. for (size_t I = 0, E = Sec->Pieces.size(); I != E; ++I) { if (!Sec->Pieces[I].Live) continue; CachedHashStringRef Str = Sec->getData(I); size_t ShardId = getShardId(Str.hash()); if ((ShardId & (Concurrency - 1)) == ThreadId) Sec->Pieces[I].OutputOff = Shards[ShardId].add(Str); } llvm-svn: 314711
Loading
Please register or sign in to comment