This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Emit warning for function declaration with qualifiedvoid return type


On Tue, 4 Jan 2005, Devang Patel wrote:

> This patch enables pedantic warning, in c99 mode, for function declarations
> that has qualified void return type. GCC already emits warning for function
> definitions.

My understanding of the standard is that the constraint in 6.9.1#3 is only 
for function definitions, not for function declarations and certainly not 
for arbitrary function type declarators.  For function type declarators 
the constraints are the weaker ones in 6.7.5.3#1.  Things are a bit less 
clear about declarations of functions which are not definitions, but my 
view is that the correct interpretation is that the constraint in the 
subclause "Function definitions" should only apply to such definitions.  
I haven't yet put this in my list of pre-DRs, but I discussed it with 
Derek Jones last month and he agreed with my interpretation.  
Interpreting it otherwise would also forbid

struct s;
struct s f();
// struct s gets defined later before f is defined or called.

which is a natural reason for the constraints on function declarators to 
be weaker than those on definitions.

Please note also:

* The same constraint is in C90 6.7.1; there should not be a C99 
conditional here.

* The examples in DR#113 (supposing you came across this issue as a 
failure in a testsuite referencing that DR) only involve function 
definitions; the question of other declarations was not raised there.

> This is a regression from earlier GCC.

This is a deliberate change from earlier GCC.

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]