public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4784: Anonymous structs issues
@ 2003-03-07 9:56 Joseph S. Myers
0 siblings, 0 replies; 3+ messages in thread
From: Joseph S. Myers @ 2003-03-07 9:56 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c/4784; it has been noted by GNATS.
From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: <bangerth@dealii.org>, <gcc-bugs@gcc.gnu.org>,
Joseph Myers <jsm28@cam.ac.uk>, <gcc-gnats@gcc.gnu.org>
Cc:
Subject: Re: c/4784: Anonymous structs issues
Date: Fri, 7 Mar 2003 09:51:25 +0000 (GMT)
On 7 Mar 2003 bangerth@dealii.org wrote:
> Hm, with 3.3 and present mainline, we get on this code
> -----------------------
> struct s {
> int x;
> struct { int x; };
> };
> ------------------
> the following message:
> g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -std=c99 -c x.c
> x.c:3: warning: declaration does not declare anything
What's relevant is -std=gnu99 and -std=gnu89, as this is a GNU extension.
That warning hardly diagnoses what the problem is; the point of the
extension is that certain declarations that don't declare anything do, in
fact, declare nested anonymous struct elements. The PR asks for a hard
error (with a more sensible error message). What about more complicated
cases, such as:
struct s {
struct {
int a;
struct {
int b;
};
};
struct {
int b;
int c;
};
};
(where the duplicate "b" elements should be diagnosed)?
> gcc3.2 is quiet. If compiled in C++ mode, we get this:
> g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -c x.cc
> x.cc:3: error: declaration of `int s::<anonymous struct>::x'
> x.cc:2: error: conflicts with previous declaration `int s::x'
> x.cc:3: error: duplicate member `s::<anonymous struct>::x'
>
> Joseph, is this approximately what you wanted gcc to
> tell us?
What the C++ compiler does isn't part of the PR (C++ has its own rules;
this is a C extension), but those error messages are the sort of error I
think the C front end ought to be giving: they accurately diagnose what
the problem in the example code is.
--
Joseph S. Myers
jsm28@cam.ac.uk
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/4784: Anonymous structs issues
@ 2003-03-07 15:16 Wolfgang Bangerth
0 siblings, 0 replies; 3+ messages in thread
From: Wolfgang Bangerth @ 2003-03-07 15:16 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c/4784; it has been noted by GNATS.
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: "Joseph S. Myers" <jsm28@cam.ac.uk>
Cc: gcc-bugs@gcc.gnu.org, <gcc-gnats@gcc.gnu.org>
Subject: Re: c/4784: Anonymous structs issues
Date: Fri, 7 Mar 2003 09:09:05 -0600 (CST)
> > -----------------------
> > struct s {
> > int x;
> > struct { int x; };
> > };
> > ------------------
> > the following message:
> > g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -std=c99 -c x.c
> > x.c:3: warning: declaration does not declare anything
>
> What's relevant is -std=gnu99 and -std=gnu89, as this is a GNU extension.
> That warning hardly diagnoses what the problem is; the point of the
> extension is that certain declarations that don't declare anything do, in
> fact, declare nested anonymous struct elements. The PR asks for a hard
> error (with a more sensible error message).
Ah, ok. Thanks for clarifying this (seems I am not familiar enough with
the subtleties of gnu extensions). I just checked, and 3.4 with -std=gnu99
accepts the code without any warnings, indeed.
> What about more complicated cases, such as:
>
> struct s {
> struct {
> int a;
> struct {
> int b;
> };
> };
> struct {
> int b;
> int c;
> };
> };
>
> (where the duplicate "b" elements should be diagnosed)?
The same, it isn't.
> > gcc3.2 is quiet. If compiled in C++ mode, we get this:
> > g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -c x.cc
> > x.cc:3: error: declaration of `int s::<anonymous struct>::x'
> > x.cc:2: error: conflicts with previous declaration `int s::x'
> > x.cc:3: error: duplicate member `s::<anonymous struct>::x'
> >
> > Joseph, is this approximately what you wanted gcc to
> > tell us?
>
> What the C++ compiler does isn't part of the PR [...]
Sorry, I wasn't clear enough. I had wanted to know whether this is what
you would also like the C frontend to issue. You answered this already.
Thanks for clarifying matters
Wolfgang
PS: Joseph, I have an unrelated favor that I'd like to ask you for: you
have a lot of reports where you point to some mail or a testcase. Figuring
out what exactly is the claim of this report can sometimes be tedious, and
leads to situations like the one above where I missed that this is
actually a gnu extension. It would be much simpler if you could copy and
paste a small example program from the cited sources into the PR (for the
present one, there was a one-liner in the message you pointed to, but no
command line or mention of gnu99), and a short description (3-5 lines) of
what you expect with what command line. -- Thanks!
-------------------------------------------------------------------------
Wolfgang Bangerth email: bangerth@ticam.utexas.edu
www: http://www.ticam.utexas.edu/~bangerth/
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/4784: Anonymous structs issues
@ 2003-03-07 2:24 bangerth
0 siblings, 0 replies; 3+ messages in thread
From: bangerth @ 2003-03-07 2:24 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, jsm28, nobody
Synopsis: Anonymous structs issues
State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Fri Mar 7 02:24:47 2003
State-Changed-Why:
Hm, with 3.3 and present mainline, we get on this code
-----------------------
struct s {
int x;
struct { int x; };
};
------------------
the following message:
g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -std=c99 -c x.c
x.c:3: warning: declaration does not declare anything
gcc3.2 is quiet. If compiled in C++ mode, we get this:
g/x> /home/bangerth/bin/gcc-3.4-pre/bin/gcc -W -Wall -c x.cc
x.cc:3: error: declaration of `int s::<anonymous struct>::x'
x.cc:2: error: conflicts with previous declaration `int s::x'
x.cc:3: error: duplicate member `s::<anonymous struct>::x'
Joseph, is this approximately what you wanted gcc to
tell us?
W.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4784
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-03-07 15:16 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-07 9:56 c/4784: Anonymous structs issues Joseph S. Myers
-- strict thread matches above, loose matches on Subject: below --
2003-03-07 15:16 Wolfgang Bangerth
2003-03-07 2:24 bangerth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).