1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
llvm-mirror/lib/Transforms/Instrumentation
Anna Zaks d013821982 [tsan][llvm] Implement the function attribute to disable TSan checking at run time
This implements a function annotation that disables TSan checking for the
function at run time. The benefit over attribute((no_sanitize("thread")))
is that the accesses within the callees will also be suppressed.

The motivation for this attribute is a guarantee given by the objective C
language that the calls to the reference count decrement and object
deallocation will be synchronized. To model this properly, we would need
to intercept all ref count decrement calls (which are very common in ObjC
due to use of ARC) and also every single message send. Instead, we propose
to just ignore all accesses made from within dealloc at run time. The main
downside is that this still does not introduce any synchronization, which
means we might still report false positives if the code that relies on this
synchronization is not executed from within dealloc. However, we have not seen
this in practice so far and think these cases will be very rare.

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

llvm-svn: 286663
2016-11-11 23:01:02 +00:00
..
AddressSanitizer.cpp [asan] Speed up compilation of large C++ stringmaps (tons of allocas) with ASan 2016-11-08 21:30:41 +00:00
BoundsChecking.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
CFGMST.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
CMakeLists.txt [PGO] Promote indirect calls to conditional direct calls with value-profile 2016-04-27 23:20:27 +00:00
DataFlowSanitizer.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
EfficiencySanitizer.cpp [esan] Remove global variable. 2016-10-18 19:39:23 +00:00
GCOVProfiling.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
IndirectCallPromotion.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
InstrProfiling.cpp Utility functions for appending to llvm.used/llvm.compiler.used. 2016-10-25 23:53:31 +00:00
Instrumentation.cpp [PM] code refactoring /NFC 2016-06-05 03:40:03 +00:00
LLVMBuild.txt [PGO] Resubmit "MST based PGO instrumentation infrastructure" (r254021) 2015-12-09 18:08:16 +00:00
MaximumSpanningTree.h
MemorySanitizer.cpp Use -fsanitize-recover instead of -mllvm -msan-keep-going. 2016-11-07 21:00:10 +00:00
PGOInstrumentation.cpp [PGO] Fix select instruction annotation 2016-10-25 21:47:24 +00:00
SanitizerCoverage.cpp [sancov] Don't instrument MSVC CRT stdio config helpers 2016-11-11 19:18:45 +00:00
ThreadSanitizer.cpp [tsan][llvm] Implement the function attribute to disable TSan checking at run time 2016-11-11 23:01:02 +00:00