aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
diff options
context:
space:
mode:
authorKuba Brecka <kuba.brecka@gmail.com>2016-10-31 18:28:02 +0000
committerKuba Brecka <kuba.brecka@gmail.com>2016-10-31 18:28:02 +0000
commit0222eacf0fd6618cd41d113852efe0ebcc6eb4a1 (patch)
tree2295f166412c74e7f0279f7fc872f1204378ad23 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
parent6f51be31186a5a5c99104c2791d4764c4b25eb69 (diff)
downloadllvm-0222eacf0fd6618cd41d113852efe0ebcc6eb4a1.zip
llvm-0222eacf0fd6618cd41d113852efe0ebcc6eb4a1.tar.gz
llvm-0222eacf0fd6618cd41d113852efe0ebcc6eb4a1.tar.bz2
[tsan] Add support for GCD target queues
GCD (libdispatch) has a concept of “target queues”: Each queue has either an implicit or explicit target queue, where the task is handed over to when it’s time to execute it. For example, a concurrent queue can have a serial target queue (effectively making the first queue serial), or multiple queues can have the same serial target queue (which means tasks in all the queues are mutually excluded). Thus we need to acquire-release semantics on the full “chain” of target queues. This patch changes the way we Acquire() and Release() when executing tasks in queues. Now we’ll walk the chain of target queues and synchronize on each queue that is serial (or when dealing with a barrier block). This should avoid false positives when using dispatch_set_target_queue(). Differential Revision: https://reviews.llvm.org/D25835 llvm-svn: 285613
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp')
0 files changed, 0 insertions, 0 deletions