public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* gcc 4.0.1 regressions with friend injection
@ 2005-07-26  0:55 Mike Stump
  2005-07-26  1:09 ` Gabriel Dos Reis
  0 siblings, 1 reply; 3+ messages in thread
From: Mike Stump @ 2005-07-26  0:55 UTC (permalink / raw)
  To: GCC Development

We are seeing tons of regressions (9 of 2377 for fink, over 100 or so  
out of 8000 was it for internal projects) in the build state of  
projects with code like:

    class bar {
       friend class foo;
       void baz(foo *x) {}
    };

from 4.0.0 in 4.0.1.  This is really unfortunate.  What we really  
need is a warning (that can be easily turned off with a -Wno- switch)  
for the next 2 years, and then an error, if you must.  Doing this  
from x.0.0 to x.0.1 is, uhm, well, more costly than if it had been  
done in 4.0.0.  :-(

Thoughts?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gcc 4.0.1 regressions with friend injection
  2005-07-26  0:55 gcc 4.0.1 regressions with friend injection Mike Stump
@ 2005-07-26  1:09 ` Gabriel Dos Reis
  2005-07-26  4:07   ` William Beebe
  0 siblings, 1 reply; 3+ messages in thread
From: Gabriel Dos Reis @ 2005-07-26  1:09 UTC (permalink / raw)
  To: Mike Stump; +Cc: GCC Development

Mike Stump <mrs@apple.com> writes:

| We are seeing tons of regressions (9 of 2377 for fink, over 100 or so
| out of 8000 was it for internal projects) in the build state of
| projects with code like:
| 
|     class bar {
|        friend class foo;
|        void baz(foo *x) {}
|     };
| 
| from 4.0.0 in 4.0.1.  This is really unfortunate.  What we really
| need is a warning (that can be easily turned off with a -Wno- switch)
| for the next 2 years, and then an error, if you must.  Doing this
| from x.0.0 to x.0.1 is, uhm, well, more costly than if it had been
| done in 4.0.0.  :-(
| 
| Thoughts?

This area has been a historical weakness of GCC, causing us to reject
valid-code or accept valid-code-with-wrong-semantics.  As you point
out above, it can can the overload set and such.  Because the point of
declaration is far away from the point of possible overload
resolution, it is not all clear when an "invalid declaration accepted
for past bug compayibility" should be or not be part of the overload
set.  You can warn, but it you turn it off, it is not obvious what the
semantics should be.  

(This reminds me of the "implicit typename" stuff)

-- Gaby

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gcc 4.0.1 regressions with friend injection
  2005-07-26  1:09 ` Gabriel Dos Reis
@ 2005-07-26  4:07   ` William Beebe
  0 siblings, 0 replies; 3+ messages in thread
From: William Beebe @ 2005-07-26  4:07 UTC (permalink / raw)
  To: Gabriel Dos Reis; +Cc: Mike Stump, GCC Development

Which leads me to the old saying that friends don't let friends use friends.

On 26 Jul 2005 03:07:49 +0200, Gabriel Dos Reis
<gdr@integrable-solutions.net> wrote:
> Mike Stump <mrs@apple.com> writes:
> 
> | We are seeing tons of regressions (9 of 2377 for fink, over 100 or so
> | out of 8000 was it for internal projects) in the build state of
> | projects with code like:
> |
> |     class bar {
> |        friend class foo;
> |        void baz(foo *x) {}
> |     };
> |
> | from 4.0.0 in 4.0.1.  This is really unfortunate.  What we really
> | need is a warning (that can be easily turned off with a -Wno- switch)
> | for the next 2 years, and then an error, if you must.  Doing this
> | from x.0.0 to x.0.1 is, uhm, well, more costly than if it had been
> | done in 4.0.0.  :-(
> |
> | Thoughts?
> 
> This area has been a historical weakness of GCC, causing us to reject
> valid-code or accept valid-code-with-wrong-semantics.  As you point
> out above, it can can the overload set and such.  Because the point of
> declaration is far away from the point of possible overload
> resolution, it is not all clear when an "invalid declaration accepted
> for past bug compayibility" should be or not be part of the overload
> set.  You can warn, but it you turn it off, it is not obvious what the
> semantics should be.
> 
> (This reminds me of the "implicit typename" stuff)
> 
> -- Gaby
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-07-26  4:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-26  0:55 gcc 4.0.1 regressions with friend injection Mike Stump
2005-07-26  1:09 ` Gabriel Dos Reis
2005-07-26  4:07   ` William Beebe

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