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