aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2016-03-17 18:43:08 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2016-03-17 18:43:08 +0000
commit14ba7b28a80d2a0a66668f57a3fab2c205b85cd4 (patch)
tree34c9f7ad96c0fefcef4b434fd9ea02c14d751202
parentded6091379ad0d03bf5ea26633d501b026615c09 (diff)
downloadgcc-14ba7b28a80d2a0a66668f57a3fab2c205b85cd4.zip
gcc-14ba7b28a80d2a0a66668f57a3fab2c205b85cd4.tar.gz
gcc-14ba7b28a80d2a0a66668f57a3fab2c205b85cd4.tar.bz2
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
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/atomic-op-6.c11
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index d00d9d9..e7956e0 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-17 Marek Polacek <polacek@redhat.com>
+
+ PR c/69407
+ * c-common.c (resolve_overloaded_builtin): Set TREE_USED for the fetch
+ operations.
+
2016-03-14 Jason Merrill <jason@redhat.com>
* 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 08b761c..30c815d 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 b3c16b5..4fa5519 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-17 Marek Polacek <polacek@redhat.com>
+
+ PR c/69407
+ * gcc.dg/atomic-op-6.c: New test.
+
2016-03-17 David Malcolm <dmalcolm@redhat.com>
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 0000000..f88c293
--- /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" } */
+}