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

            Bug ID: 69407
           Summary: -Wunused-value on __atomic_fetch_OP and
                    __atomic_OP_fetch
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

Invoking the __atomic_fetch_OP and __atomic_OP_fetch intrinsics without using
their return value elicits a -Wunused-value warning.  The warning doesn't seem
useful, especially in the __atomic_OP_fetch(ptr, val) case, since a) whether
the computed value is used impossible to determine at the call site, and b) the
corresponding (*ptr OP= val) expressions don't cause any warnings.  (As
expected, the warnings can be suppressed by casting the result ti void).

No other CCC-compatible compiler emits warnings for these intrinsics.

$ cat z.c && /home/msebor/build/gcc-trunk-git/gcc/xgcc
-B/home/msebor/build/gcc-trunk-git/gcc -S -Wall -Wextra -Wpedantic -o/dev/null
z.c 
void foo (int*i, int);

void foo (int *p, int a)
{
    __atomic_fetch_add (&p, a, 0);
    __atomic_add_fetch (&p, a, 0);

}

z.c: In function ‘foo’:
z.c:5:5: warning: value computed is not used [-Wunused-value]
     __atomic_fetch_add (&p, a, 0);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

z.c:6:5: warning: value computed is not used [-Wunused-value]
     __atomic_add_fetch (&p, a, 0);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to