mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-24 03:14:08 +08:00
Add -Wtsan.
gcc/ChangeLog: PR sanitizer/97868 * common.opt: Add new warning -Wtsan. * doc/invoke.texi: Likewise. * tsan.c (instrument_builtin_call): Warn users about unsupported std::atomic_thread_fence. gcc/testsuite/ChangeLog: PR sanitizer/97868 * gcc.dg/tsan/atomic-fence.c: New test.
This commit is contained in:
parent
5c5eb7e487
commit
8833eab446
@ -842,6 +842,10 @@ Wvector-operation-performance
|
||||
Common Var(warn_vector_operation_performance) Warning
|
||||
Warn when a vector operation is compiled outside the SIMD.
|
||||
|
||||
Wtsan
|
||||
Common Var(warn_tsan) Init(1) Warning
|
||||
Warn about unsupported features in ThreadSanitizer.
|
||||
|
||||
Xassembler
|
||||
Driver Separate
|
||||
|
||||
|
@ -387,7 +387,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wswitch -Wno-switch-bool -Wswitch-default -Wswitch-enum @gol
|
||||
-Wno-switch-outside-range -Wno-switch-unreachable -Wsync-nand @gol
|
||||
-Wsystem-headers -Wtautological-compare -Wtrampolines -Wtrigraphs @gol
|
||||
-Wtype-limits -Wundef @gol
|
||||
-Wtsan -Wtype-limits -Wundef @gol
|
||||
-Wuninitialized -Wunknown-pragmas @gol
|
||||
-Wunsuffixed-float-constants -Wunused @gol
|
||||
-Wunused-but-set-parameter -Wunused-but-set-variable @gol
|
||||
@ -8023,6 +8023,16 @@ Note that the code above is invalid in C++11.
|
||||
|
||||
This warning is enabled by default.
|
||||
|
||||
@item -Wtsan
|
||||
@opindex Wtsan
|
||||
@opindex Wno-tsan
|
||||
Warn about unsupported features in ThreadSanitizer.
|
||||
|
||||
ThreadSanitizer does not support @code{std::atomic_thread_fence} and
|
||||
can report false positives.
|
||||
|
||||
This warning is enabled by default.
|
||||
|
||||
@item -Wtype-limits
|
||||
@opindex Wtype-limits
|
||||
@opindex Wno-type-limits
|
||||
|
11
gcc/testsuite/gcc.dg/tsan/atomic-fence.c
Normal file
11
gcc/testsuite/gcc.dg/tsan/atomic-fence.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* PR sanitizer/97868 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-fsanitize=thread" } */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
__atomic_thread_fence (__ATOMIC_RELAXED); /* { dg-warning ".atomic_thread_fence. is not supported with .-fsanitize=thread." } */
|
||||
return 0;
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "asan.h"
|
||||
#include "builtins.h"
|
||||
#include "target.h"
|
||||
#include "diagnostic-core.h"
|
||||
|
||||
/* Number of instrumented memory accesses in the current function. */
|
||||
|
||||
@ -500,6 +501,11 @@ instrument_builtin_call (gimple_stmt_iterator *gsi)
|
||||
continue;
|
||||
else
|
||||
{
|
||||
if (fcode == BUILT_IN_ATOMIC_THREAD_FENCE)
|
||||
warning_at (gimple_location (stmt), OPT_Wtsan,
|
||||
"%qs is not supported with %qs", "atomic_thread_fence",
|
||||
"-fsanitize=thread");
|
||||
|
||||
tree decl = builtin_decl_implicit (tsan_atomic_table[i].tsan_fcode);
|
||||
if (decl == NULL_TREE)
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user