[Bug c/99588] variable set but not used warning on static _Atomic assignment

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 19 21:55:35 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99588

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:3279a9a5a9a2e4e17175678cb7b15613495e306e

commit r11-7746-g3279a9a5a9a2e4e17175678cb7b15613495e306e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Mar 19 22:54:31 2021 +0100

    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.


More information about the Gcc-bugs mailing list