summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/Z3ConstraintManager.cpp
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2018-06-06 06:07:48 +0000
committerDean Michael Berris <dberris@google.com>2018-06-06 06:07:48 +0000
commitc561970b27c3363b59e4425a3d1a4f2dafe5e00d (patch)
tree9c65e3625451144fa212cce0aeb0c7404c079934 /clang/lib/StaticAnalyzer/Core/Z3ConstraintManager.cpp
parent8084f91e92ec01e0c1e4f520e6deb63f636b0733 (diff)
downloadbcm5719-llvm-c561970b27c3363b59e4425a3d1a4f2dafe5e00d.tar.gz
bcm5719-llvm-c561970b27c3363b59e4425a3d1a4f2dafe5e00d.zip
[XRay][compiler-rt] Refactor recursion guard for Basic and FDR Mode
Summary: This change extracts the recursion guard implementation from FDR Mode and updates it to do the following: - Do the atomic operation correctly to be signal-handler safe. - Make it usable in both FDR and Basic Modes. Before this change, the recursion guard relied on an unsynchronised read and write on a volatile thread-local. A signal handler could then run in between the read and the write, and then be able to run instrumented code as part of the signal handling. Using an atomic exchange instead fixes that by doing a proper mutual exclusion even in the presence of signal handling. Reviewers: kpw, eizan, jfb Reviewed By: eizan Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D47696 llvm-svn: 334064
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/Z3ConstraintManager.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud