aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel López-Ibáñez <manu@gcc.gnu.org>2007-02-13 00:29:17 +0000
committerManuel López-Ibáñez <manu@gcc.gnu.org>2007-02-13 00:29:17 +0000
commit2397c5750e422ea5b7061dbfbabdbd3f2ba54905 (patch)
treecffb83fc878960a6c078d51494792251b606b706
parentbad333ffe374313f11880ee8b1792bd05ff9f725 (diff)
downloadgcc-2397c5750e422ea5b7061dbfbabdbd3f2ba54905.zip
gcc-2397c5750e422ea5b7061dbfbabdbd3f2ba54905.tar.gz
gcc-2397c5750e422ea5b7061dbfbabdbd3f2ba54905.tar.bz2
re PR c/29521 (Confusing warning for return with expression in function returning void)
2007-02-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR c/29521 * c-typeck.c (c_finish_return): Improve warning message. testsuite/ * gcc.dg/c90-return-1.c: Update output. * gcc.dg/c99-return-1.c: Likewise. From-SVN: r121876
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-typeck.c4
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/pr29521-2.c15
-rw-r--r--gcc/testsuite/gcc.dg/pr29521.c15
5 files changed, 44 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0f91517..a25d814 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR c/29521
+ * c-typeck.c (c_finish_return): Improve warning message.
+
2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* alias.c (find_symbolic_term): Delete unused function.
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 013a206..c807a7e 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -6935,8 +6935,10 @@ c_finish_return (tree retval)
else if (valtype == 0 || TREE_CODE (valtype) == VOID_TYPE)
{
current_function_returns_null = 1;
- if (pedantic || TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE)
+ if (TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE)
pedwarn ("%<return%> with a value, in function returning void");
+ else if (pedantic)
+ pedwarn ("ISO C forbids %<return%> with expression, in function returning void");
}
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1255556..7245d64 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-02-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR c/29521
+ * gcc.dg/c90-return-1.c: Update output.
+ * gcc.dg/c99-return-1.c: Likewise.
+
2007-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30554
diff --git a/gcc/testsuite/gcc.dg/pr29521-2.c b/gcc/testsuite/gcc.dg/pr29521-2.c
new file mode 100644
index 0000000..734652c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr29521-2.c
@@ -0,0 +1,15 @@
+/* PR 29521 : warning for return with expression in function returning void */
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+void func (void) { }
+
+void func2 (void)
+{
+ return func (); /* { dg-error "ISO C forbids 'return' with expression" } */
+}
+
+void func3 (void)
+{
+ return 1; /* { dg-error "'return' with a value" } */
+}
diff --git a/gcc/testsuite/gcc.dg/pr29521.c b/gcc/testsuite/gcc.dg/pr29521.c
new file mode 100644
index 0000000..b6fb535
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr29521.c
@@ -0,0 +1,15 @@
+/* PR 29521 : warning for return with expression in function returning void */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void func (void) { }
+
+void func2 (void)
+{
+ return func ();
+}
+
+void func3 (void)
+{
+ return 1; /* { dg-warning "'return' with a value" } */
+}