aboutsummaryrefslogtreecommitdiff
path: root/gcc/tsan.c
diff options
context:
space:
mode:
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 (); }