This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [vtab (and trunk?)] fix fallout from SSA-coalescing user variables
On Oct 11, 2007, "Richard Guenther" <richard.guenther@gmail.com> wrote:
> The extra checking triggers PR33735.
Thanks. This is an interesting testcase. It is a variant of the
problem H-P had reported, but I hadn't realized there was a lingering
bug then.
The problem is that an exception thrown during stack unwinding is
supposed to call terminate(), but AFAICT, when we inline the dtor of
temporaries (other than the exception object) in the throw expression
itself, calls that are brought in as part of the destructor get EH
edges as if they were before the throw expression, escaping the
requirement to call terminate in case they throw.
Now, since there aren't edges from the original dtor call to enclosing
catch or clean-up points, when we look for such edges at the time of
adjusting the PHI nodes, we don't find them. Oops.
I'll look more into it after getting some sleep.
--
Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member http://www.fsfla.org/
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}