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]

Re: c++/9429: ICE in template instantiation with a pointered new operator


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
r=9429

Reduced snippet:
------------------------
struct B
{
 ~B() throw() {}

 void* foo(void)
 { return 0; }
};

void* operator new(unsigned int, void* __p) { return __p; }
void operator delete (void*, void*) { };

void A(void)
{
 (void)new (B().foo()) int();
}

------------------------
ice5.cpp: In function `void A()':
ice5.cpp:15: Internal compiler error in convert_from_eh_region_ranges_1, at
except.c:1404
Please submit a full bug report,

GCC is confused by a temporary with exception specification in destructor
created within a placement-new expression. For the submitter, the easy fix
is to modify all the Array*Template<>::MakeEntry() so that the temporary is
created at function scope instead of within the placement new.

Giovanni Bajo


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