aboutsummaryrefslogtreecommitdiff
path: root/gcc/asan.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-03-19 22:54:31 +0100
committerJakub Jelinek <jakub@redhat.com>2021-03-19 22:54:31 +0100
commit3279a9a5a9a2e4e17175678cb7b15613495e306e (patch)
tree1874979bd0e80e0189c05bfa79b2fe94625ce9b6 /gcc/asan.c
parente5d74554b5759637439c7cab00903f864653af5f (diff)
downloadgcc-3279a9a5a9a2e4e17175678cb7b15613495e306e.zip
gcc-3279a9a5a9a2e4e17175678cb7b15613495e306e.tar.gz
gcc-3279a9a5a9a2e4e17175678cb7b15613495e306e.tar.bz2
c: Fix up -Wunused-but-set-* warnings for _Atomics [PR99588]
As the following testcases show, compared to -D_Atomic= case we have many -Wunused-but-set-* warning false positives. When an _Atomic variable/parameter is read, we call mark_exp_read on it in convert_lvalue_to_rvalue, but build_atomic_assign does not. For consistency with the non-_Atomic case where we mark_exp_read the lhs for lhs op= ... but not for lhs = ..., this patch does that too. But furthermore we need to pattern match the trees emitted by _Atomic store, so that _Atomic store itself is not marked as being a variable read, but when the result of the store is used, we mark it. 2021-03-19 Jakub Jelinek <jakub@redhat.com> PR c/99588 * c-typeck.c (mark_exp_read): Recognize what build_atomic_assign with modifycode NOP_EXPR produces and mark the _Atomic var as read if found. (build_atomic_assign): For modifycode of NOP_EXPR, use COMPOUND_EXPRs rather than STATEMENT_LIST. Otherwise call mark_exp_read on lhs. Set TREE_SIDE_EFFECTS on the TARGET_EXPR. * gcc.dg/Wunused-var-5.c: New test. * gcc.dg/Wunused-var-6.c: New test.
Diffstat (limited to 'gcc/asan.c')
0 files changed, 0 insertions, 0 deletions