[PATCH] Emit warning for function declaration with qualified void return type

Devang Patel dpatel@apple.com
Tue Jan 4 20:04:00 GMT 2005


On Jan 4, 2005, at 11:51 AM, Joseph S. Myers wrote:

> 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.

We looked at 6.9.1#3 and 6.7.5.3#1 and had some discussions. Since 
patch is
trivial, I decided to request feedback along with actual patch.

> 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.

I did not check C90 :)

> * 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.

Indeed, we came across this issue as a testsuite failure.

>> This is a regression from earlier GCC.
>
> This is a deliberate change from earlier GCC.

Thanks.

-
Devang



More information about the Gcc-patches mailing list