aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/stmt.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/Wunused-value-2.c18
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f36c288..152407b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR middle-end/30729
+ * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
+ effects unknown to this function, return early.
+
2007-02-15 Ian Lance Taylor <iant@google.com>
* lower-subreg.c (move_eh_region_note): New static function.
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 9578293..9b4e24f 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1425,6 +1425,7 @@ warn_if_unused_value (tree exp, location_t locus)
case TRY_CATCH_EXPR:
case WITH_CLEANUP_EXPR:
case EXIT_EXPR:
+ case VA_ARG_EXPR:
return 0;
case BIND_EXPR:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 191cb00..20c5591 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR middle-end/30729
+ * gcc.dg/Wunused-value-2.c: New testcase.
+
2007-02-15 Ian Lance Taylor <iant@google.com>
* g++.dg/eh/subreg-1.C: New test.
diff --git a/gcc/testsuite/gcc.dg/Wunused-value-2.c b/gcc/testsuite/gcc.dg/Wunused-value-2.c
new file mode 100644
index 0000000..4858bfa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wunused-value-2.c
@@ -0,0 +1,18 @@
+/* Test -Wunused-value. Bug 30729. */
+/* { dg-do compile } */
+/* { dg-options "-Wunused-value" } */
+/* Make sure va_arg does not cause a value computed is not used warning
+ because it has side effects. */
+#include <stdarg.h>
+
+int f(int t, ...)
+{
+ va_list a;
+ va_start (a, t);
+ va_arg(a, int);/* { dg-bogus "value computed is not used" } */
+ int t1 = va_arg(a, int);
+ va_end(a);
+ return t1;
+}
+
+