c++/9443: [3.4 regression] ICE when accessing a nonstatic member as A::i

Giovanni Bajo giovannibajo@libero.it
Thu Apr 10 20:18:00 GMT 2003


Volker Reichelt <reichelt@igpm.rwth-aachen.de> wrote:


> For the record:

I think this audit trail is too complex now. I'd rather split it up into
smaller new bug reports and close this one. You can still have a link in the
description to this PR in case it's really needed.

> * The ICE in the case with "A::i" is fixed (mainline as of gcc 20030406).
>   The error message, however, could still use some improvement:
>
>   PR9443A.cc: In member function `int B<<anonymous> >::foo() [with int
>      <anonymous> = 0]':
>   PR9443A.cc:15:   instantiated from here
>   PR9443A.cc:12: error: 'struct B<0>' has no member named 'i'
>
>   We tried to access A::i and not B<0>::i as the error message suggests.
>   This is as bad as the message on the 3.3 branch:
>
>   PR9443A.cc: In member function `int B<<anonymous> >::foo() [with int
>    <anonymous> = 0]':
>   PR9443A.cc:15:   instantiated from here
>   PR9443A.cc:12: error: type `A' is not a base type for type `B<0>'
>
>   In fact you can make the code legal if you derive B from A, so this
>   might actually help in some situations.

This should be filed as a confusing error message / change request. I
personally believe that mainline's message is even more confusing. The error
message should also at least mention that A::i is not a static member.
Comeau's error message is "a non-static member reference must be relative to
a specific object".
Would you please file this separately?

> * The accepts-illegal bug in the case "A::j" still persists on mainline.
>   I changed the synopsis to reflect the situation.

This is a very serious regression in my opionion. Would you please post it
in a separate and clear PR?

>   The boost problems regarding the 3.3 branch are probably a different
>   issue (an ICE in c_expand_expr, at c-common.c happens quite often -
>   the reason for the failure is usually buried elsewhere).
>   Alas there are no more recent results available on
>
>     http://cci.lbl.gov/boost/results/
>
>   The tests were performed with gcc 3.3-20030306. If the problems with the
>   3.3 branch persist, we should probably have a look at it. Could you test
>   it with a more recent compiler, Giovanni?

Sure, will do. If you think they are not related, this PR can be closed once
the new PRs are submitted.

Giovanni Bajo



More information about the Gcc-bugs mailing list