This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [C++ PATCH]: Fix 9043
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Nathan Sidwell <nathan at codesourcery dot com>
- Cc: Mark Mitchell <mitchell at codesourcery dot com>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 16 Dec 2003 07:39:29 -0800
- Subject: Re: [C++ PATCH]: Fix 9043
- Organization: CodeSourcery, LLC
- References: <3FDF1E8E.1000208@codesourcery.com>
- Reply-to: mark at codesourcery dot com
On Tue, 2003-12-16 at 07:02, Nathan Sidwell wrote:
> Mark,
> this fixes 9043, another mangling bug. The real bug is in handling of
> array dimensions during template parsing, and this patch improves the
> handling there. It preserves the old behavour for -fabi-version=1.
> The special handling of a SCOPE_REF looked wrong to me, I'd guess a
> holdover from not processing value dependent expressions properly.
> In addition to the regular testing, I ran the testsuite with the
> abi check in compute_array_index_type hardwired to true and then
> to false, with no regressions. Likewise I ran the testsuite with
> a new cc1plus but an libstdc++ compiled with an old cc1plus.
I had to stare at this pretty hard, but it makes sense now. This patch
is OK.
If the SCOPE_REF thing has any impact, it will be on code like this:
template <typename T>
struct S {
static const int i;
static T t[i];
};
template <typename T>
T S<T>::t[S<T>::i];
This kind of thing is notoriously nasty because you have to match up "i"
with "S<T>::i".
I think that I fixed this once and for all when I got coded up the
dependent lookup logic properly. So, I think that removing the code
that you did is safe and correct.
There are things like the code above in STL, so if you made it through
the V3 testsuite that certainly means that removing the code is not
incredibly broken.
Thanks,
--
Mark Mitchell <mark@codesourcery.com>
CodeSourcery, LLC