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: Mark objects death@end of scope


Michael Matz wrote:

> 	* gimplify.c (gimplify_bind_expr): Add clobbers for all variables
> 	that go out of scope and live in memory.

This seems to have completely broken SPU exception handling (note that
SPU is currently completely broken anyway due to the libgcc move).

What happens is that with that patch, some of the core internal routines
of the unwinder itself, including _Unwind_SjLj_Resume, themselves get
exception regions.

While the DWARF unwinder may be able to cope with this, the SjLj unwinder
- which SPU uses - appears to get totally confused by this.  We end up in
an endless loop where _Unwind_SjLj_Resumes "resumes" to a location within
itself.

One reason why this happens is that the unwind*.c files are specifically
built with -fexception.  I think this is for the benefit of the DWARF
unwinder, to ensure CFI records are available for those routines.  But
for the SjLj unwinder, it's a bit counter-productive ...

Any thoughts how to fix this?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


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