This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/9138: New C++ parser regression on mips-irix6 with g++.jason/thunk1.C (and thunk2.C/thunk3.C)
- From: ghazi at caip dot rutgers dot edu
- To: gcc-gnats at gcc dot gnu dot org
- Cc: mark at codesourcery dot com
- Date: 2 Jan 2003 17:29:05 -0000
- Subject: c++/9138: New C++ parser regression on mips-irix6 with g++.jason/thunk1.C (and thunk2.C/thunk3.C)
- Reply-to: ghazi at caip dot rutgers dot edu
>Number: 9138
>Category: c++
>Synopsis: New C++ parser regression on mips-irix6 with g++.jason/thunk1.C (and thunk2.C/thunk3.C)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Jan 02 09:36:01 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Kaveh Ghazi
>Release: gcc version 3.4 20030101 (experimental)
>Organization:
>Environment:
mips-sgi-irix6.5
>Description:
I get these new testsuite failures on mips-sgi-irix6.5 which appear to be related:
FAIL: g++.jason/thunk1.C caused compiler crash
FAIL: g++.jason/thunk2.C caused compiler crash
FAIL: g++.jason/thunk3.C caused compiler crash
The logfile message for all three looks like this:
thunk1.C: In member function `A CExample::_ZThn4_N8CExample9MixinFuncEi1A(int, A)':
thunk1.C:33: internal compiler error: tree check: expected tree_list, have function_decl in friend_accessible_p, at cp/search.c:954
>How-To-Repeat:
Compile thunk1.ii with:
cc1plus -fpreprocessed thunk1.ii -quiet -dumpbase thunk1.C -ansi -auxbase thunk1 -pedantic-errors -Wno-long-long -ansi -version -fmessage-length=0 -o thunk1.s
# 1 "/caip/u58/ghazi/gcc-testing/egcc-CVS20030102/gcc/testsuite/g++.old-deja/g++.jason/thunk1.C"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "/caip/u58/ghazi/gcc-testing/egcc-CVS20030102/gcc/testsuite/g++.old-deja/g++.jason/thunk1.C"
struct A {
void* p;
A (void* q): p (q) { }
A (const A& a): p (a.p) { }
};
class CBase {
public:
virtual void BaseFunc();
};
class MMixin {
public:
virtual A MixinFunc(int arg, A arg2) = 0;
};
class CExample : public CBase, public MMixin {
public:
A MixinFunc(int arg, A arg2);
};
void CBase::BaseFunc()
{
}
A CExample::MixinFunc(int arg, A arg2)
{
if (arg != 1 || arg2.p != 0)
return 0;
return this;
}
void* test(MMixin& anExample)
{
return anExample.MixinFunc(1,A(0)).p;
}
int main ()
{
CExample c;
if (test(c) != &c)
return 1;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: