From 14ba7b28a80d2a0a66668f57a3fab2c205b85cd4 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 17 Mar 2016 18:43:08 +0000 Subject: [PATCH] re PR c/69407 (-Wunused-value on __atomic_fetch_OP and __atomic_OP_fetch) PR c/69407 * c-common.c (resolve_overloaded_builtin): Set TREE_USED for the fetch operations. * gcc.dg/atomic-op-6.c: New test. From-SVN: r234304 --- gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-common.c | 4 ++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/atomic-op-6.c | 11 +++++++++++ 4 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/atomic-op-6.c diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index d00d9d90947..e7956e05131 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2016-03-17 Marek Polacek + + PR c/69407 + * c-common.c (resolve_overloaded_builtin): Set TREE_USED for the fetch + operations. + 2016-03-14 Jason Merrill * c-cppbuiltin.c (c_cpp_builtins): Set __cpp_hex_float. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 08b761c4776..30c815d5381 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -11445,6 +11445,10 @@ resolve_overloaded_builtin (location_t loc, tree function, && orig_code != BUILT_IN_ATOMIC_STORE_N) result = sync_resolve_return (first_param, result, orig_format); + if (fetch_op) + /* Prevent -Wunused-value warning. */ + TREE_USED (result) = true; + /* If new_return is set, assign function to that expr and cast the result to void since the generic interface returned void. */ if (new_return) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b3c16b55232..4fa5519075a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-17 Marek Polacek + + PR c/69407 + * gcc.dg/atomic-op-6.c: New test. + 2016-03-17 David Malcolm PR c/70264 diff --git a/gcc/testsuite/gcc.dg/atomic-op-6.c b/gcc/testsuite/gcc.dg/atomic-op-6.c new file mode 100644 index 00000000000..f88c29389cb --- /dev/null +++ b/gcc/testsuite/gcc.dg/atomic-op-6.c @@ -0,0 +1,11 @@ +/* Test we don't generate bogus warnings. */ +/* PR c/69407 */ +/* { dg-do compile } */ +/* { dg-options "-Wall -Wextra" } */ + +void +foo (int *p, int a) +{ + __atomic_fetch_add (&p, a, 0); /* { dg-bogus "value computed is not used" } */ + __atomic_add_fetch (&p, a, 0); /* { dg-bogus "value computed is not used" } */ +} -- 2.30.2