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

Giovanni Bajo giovannibajo@libero.it
Fri Jan 24 14:46:00 GMT 2003


The following reply was made to PR c++/9429; it has been noted by GNATS.

From: "Giovanni Bajo" <giovannibajo@libero.it>
To: <gcc-gnats@gcc.gnu.org>,
	<gcc-bugs@gcc.gnu.org>,
	<nobody@gcc.gnu.org>,
	<gcc-prs@gcc.gnu.org>,
	<t-gcc@snowelm.com>
Cc:  
Subject: Re: c++/9429: ICE in template instantiation with a pointered new operator
Date: Fri, 24 Jan 2003 15:45:32 +0100

 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
 



More information about the Gcc-prs mailing list