This is the mail archive of the gcc-patches@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: [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}


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