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 qualified void return type



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


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