On 31 October 2006 20:21, Igor Bukanov wrote:

> GCC 4.1.2 and 4.0.3 incorrectly accepts the following program:
> 
> void f();
> 
> void g()
> {
>     return f();
> }
> 
> No warning are issued on my Ubuntu Pentium-M box. Is it a known bug?
> 
> Regards, Igor


  Yep.  PR 5678.  This patch worked for me: apologies in advance for 
line-wrapping it.

===================================================================
RCS file: /sources/repository/external_source/gnu/gcc-3.3.3/gcc/c-typeck.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- external_source/gnu/gcc-3.3.3/gcc/c-typeck.c        2004/03/26 13:22:21     
1.1
+++ external_source/gnu/gcc-3.3.3/gcc/c-typeck.c        2006/04/23 15:25:06     
1.2
@@ -7068,8 +7068,12 @@
   else if (valtype == 0 || TREE_CODE (valtype) == VOID_TYPE)
     {
       current_function_returns_null = 1;
+      /* [ARTIMI_LOCAL]  Fix PR40 (gcc PR5678) by warning without -pedantic, 
+      even if attempting to 'return a void'.   */
       if (pedantic || TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE)
        pedwarn ("`return' with a value, in function returning void");
+      else if (warn_return_type)
+       warning ("`return' with a value, in function returning void");
     }
   else
     {



    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to