This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/9138: New C++ parser regression on mips-irix6 with g++.jason/thunk1.C (and thunk2.C/thunk3.C)


>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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]