Go to file
Vedant Kumar ee6c233ae0 [InstrProf] Use atomic profile counter updates for TSan
Thread sanitizer instrumentation fails to skip all loads and stores to
profile counters. This can happen if profile counter updates are merged:

  %.sink = phi i64* ...
  %pgocount5 = load i64, i64* %.sink
  %27 = add i64 %pgocount5, 1
  %28 = bitcast i64* %.sink to i8*
  call void @__tsan_write8(i8* %28)
  store i64 %27, i64* %.sink

To suppress TSan diagnostics about racy counter updates, make the
counter updates atomic when TSan is enabled. If there's general interest
in this mode it can be surfaced as a clang/swift driver option.

Testing: check-{llvm,clang,profile}

rdar://40477803

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

llvm-svn: 339955
2018-08-16 22:24:47 +00:00
clang [InstrProf] Use atomic profile counter updates for TSan 2018-08-16 22:24:47 +00:00
clang-tools-extra Implement a (simple) Markdown generator 2018-08-16 21:54:34 +00:00
compiler-rt [hwasan] Enable Android logging. 2018-08-16 21:56:04 +00:00
debuginfo-tests SafeStack: Disable Darwin support 2018-08-14 21:38:50 +00:00
libclc amdgcn: Use __constant AS for amdgcn builtins. 2018-08-03 15:14:08 +00:00
libcxx Establish the <bit> header. NFC yet. Reviewed as https://reviews.llvm.org/D50815 2018-08-16 21:35:38 +00:00
libcxxabi Factor Node creation out of the demangler. No functionality change intended. 2018-08-16 22:04:36 +00:00
libunwind NFC: Test commit access 2018-08-16 16:55:07 +00:00
lld Update LLD tests for CodeView dumper change in r339907 2018-08-16 18:03:06 +00:00
lldb Update the Core file loading instructions so they keep the process stopped after attaching to a core file. 2018-08-16 22:13:01 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm [InstrProf] Use atomic profile counter updates for TSan 2018-08-16 22:24:47 +00:00
openmp [OMPT] Remove OMPT idle callback 2018-08-15 13:54:28 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [DepInfo] Use isl++ in Dependences::isValidSchedule. NFC. 2018-08-10 22:33:27 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.