On Wed, Sep 07, 2005 at 09:55:29PM +0200, Richard B. Kreckel wrote:
> On 7 Sep 2005, Gabriel Dos Reis wrote:
> > Mike Stump <[EMAIL PROTECTED]> writes:
> > | I'll echo the generalized request that we try and avoid tightenings
> > | on other than x.y.0 releases.
> >
> > I hear you.  In this specific case, it worths remembering people that
> > the issue is not just an accept-invalid that was turned into
> > reject-invalid, but wrong-code generation (in the sense that
> > wrong-code was being genereted for *valid* program) that was fixed.
> 
> I'm unable to find which wrong-code generation PR was fixed by reading
> this thread.  That applies to any of the two examples I posted.
> 
> Anyway, as I mentioned: If this broken code was a collateral damage of a
> really serious bug, then it would be foolish to complain.  It's just that
> I'm having difficulties imagining how accepting a friend declaration as a
> forward declaration (which by the way worked since at least GCC 2.7.x) can
> make your code accidentally fire that ballistic rocket.  (If it really
> can, then you're having a truck load of other problems besides code
> quality.)

In the hopes that it will help the discussion I ran regression hunts on
the two test cases.  The first test:

  struct foo {
    friend class bar;
    void screw (bar&);
  };

is rejected starting with this 4.0 patch:

  http://gcc.gnu.org/ml/gcc-cvs/2005-05/msg01007.html

The second test:

  struct lala {
    void f () const {}
  };
  struct lulu {
    template<class T> lulu (void (T::*)()) {}
  };
  lulu froobrazzz(&lala::f);

is rejected starting with this 4.0 patch:

  http://gcc.gnu.org/ml/gcc-cvs/2005-08/msg00384.html

Janis

Reply via email to