aboutsummaryrefslogtreecommitdiff
path: root/gcc/tsan.c
diff options
context:
space:
mode:
authorMike Stump <mikestump@comcast.net>2015-01-08 18:56:11 +0000
committerMike Stump <mrs@gcc.gnu.org>2015-01-08 18:56:11 +0000
commitde35aa66b07a62a1c27f4b104577848fa8f7ec17 (patch)
treeddb97d86010300366e6418abfcc44345a87e4179 /gcc/tsan.c
parentde1184c0def2fe0bafc8dd4988f7b80df7a96147 (diff)
downloadgcc-de35aa66b07a62a1c27f4b104577848fa8f7ec17.zip
gcc-de35aa66b07a62a1c27f4b104577848fa8f7ec17.tar.gz
gcc-de35aa66b07a62a1c27f4b104577848fa8f7ec17.tar.bz2
tsan.c (pass_tsan::gate): Add no_sanitize_thread support.
* tsan.c (pass_tsan::gate): Add no_sanitize_thread support. (pass_tsan_O0::gate): Likewise. * extend.texi (Function Attributes): Add no_sanitize_thread documentation. * c-common.c (c_common_attribute_table): Add no_sanitize_thread. From-SVN: r219355
Diffstat (limited to 'gcc/tsan.c')
-rw-r--r--gcc/tsan.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/tsan.c b/gcc/tsan.c
index 567a421..2dfbab0 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -868,7 +868,9 @@ public:
opt_pass * clone () { return new pass_tsan (m_ctxt); }
virtual bool gate (function *)
{
- return (flag_sanitize & SANITIZE_THREAD) != 0;
+ return ((flag_sanitize & SANITIZE_THREAD) != 0
+ && !lookup_attribute ("no_sanitize_thread",
+ DECL_ATTRIBUTES (current_function_decl)));
}
virtual unsigned int execute (function *) { return tsan_pass (); }
@@ -908,7 +910,9 @@ public:
/* opt_pass methods: */
virtual bool gate (function *)
{
- return (flag_sanitize & SANITIZE_THREAD) != 0 && !optimize;
+ return ((flag_sanitize & SANITIZE_THREAD) != 0 && !optimize
+ && !lookup_attribute ("no_sanitize_thread",
+ DECL_ATTRIBUTES (current_function_decl)));
}
virtual unsigned int execute (function *) { return tsan_pass (); }