diff options
author | Mike Stump <mikestump@comcast.net> | 2015-01-08 18:56:11 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 2015-01-08 18:56:11 +0000 |
commit | de35aa66b07a62a1c27f4b104577848fa8f7ec17 (patch) | |
tree | ddb97d86010300366e6418abfcc44345a87e4179 /gcc/tsan.c | |
parent | de1184c0def2fe0bafc8dd4988f7b80df7a96147 (diff) | |
download | gcc-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.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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 (); } |