1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/test/Instrumentation/InstrProfiling
Vedant Kumar 82e946227d [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
..
X86
always_inline.ll [InstrProf] Don't take the address of alwaysinline available_externally functions 2017-06-13 22:12:35 +00:00
atomic-updates.ll [InstrProf] Use atomic profile counter updates for TSan 2018-08-16 22:24:47 +00:00
early-exit.ll [InstrProfiling] Don't exit early when an unused intrinsic is found 2018-01-27 00:01:04 +00:00
icall.ll Resubmit r297897: [PGO] Value profile for size of memory intrinsic calls 2017-03-16 21:15:48 +00:00
linkage.ll [InstrProf] Don't register __llvm_profile_runtime_user 2018-07-27 22:21:35 +00:00
no-counters.ll [InstrProfiling] Emit the runtime hook when no counters are lowered 2018-02-28 19:00:08 +00:00
noruntime.ll
platform.ll [InstrProf] Don't register __llvm_profile_runtime_user 2018-07-27 22:21:35 +00:00
PR23499.ll [Profile] PE binary coverage bug fix 2017-04-13 23:37:12 +00:00
profiling.ll [InstrProfiling] Emit the runtime hook when no counters are lowered 2018-02-28 19:00:08 +00:00