This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/7880: Internal compiler error when passing template class to new operator
- From: Volker Reichelt <reichelt at igpm dot rwth-aachen dot de>
- To: james at tga dot com, gcc-gnats at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, nobody at gcc dot gnu dot org
- Cc: celliott at tga dot com
- Date: Fri, 15 Nov 2002 14:08:20 +0100
- Subject: Re: c++/7880: Internal compiler error when passing template class to new operator
Hi,
the templates have nothing to do with the problems
(I'll therefore change the synopsis of the PR).
The testcase can be reduced to the following code snippet
without templates that still crashes the compiler.
------------------------------snip here------------------------
typedef unsigned int size_t;
struct A
{
~A();
};
struct B
{
void operator delete (void *, A);
void* operator new (size_t, A);
B();
};
struct C
{
A bar();
};
void foo()
{
new(C().bar()) B;
}
------------------------------snip here------------------------
With gcc 3.0.x - 3.2.1 I get the following ICE:
PR7880.cc: In function `void foo()':
PR7880.cc:23: Internal compiler error in convert_from_eh_region_ranges_1, at
except.c:1404
Please submit a full bug report, [etc.]
With gcc 2.95.3 I also get an ICE.
The problem seems to be fixed in mainline.
BTW, the bug has probably the same reason as PR 8582.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8582
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7880