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: [RFA] pretty-ipa merge 11: ehcleanup pass


Jan Hubicka wrote:

> 	PR middle-end/28850
> 	* tree-pass.h (pass_cleanup_eh): New.

This pass seems to break SJLJ-based EH (at least on SPU).  I'm getting
crashes (segmentation fault) during libstdc++ build -- if the pass is
disabled, everything is back to normal.

The problem seems to be related to the sjlj_find_directly_reachable_regions
routine.  Apparently there is some disconnect between the set of regions
discovered by this routine and the set of regions used by the rest of the
EH machinery.

One symptom is that the loop in sjlj_find_directly_reachable_regions
crashes here:

      region = VEC_index (eh_region, cfun->eh->region_array, INTVAL (XEXP (note, 0)));

      type_thrown = NULL_TREE;
      if (region->type == ERT_THROW)
        {

because of a NULL "region" pointer.

Another symptom is that some region is *not* recognized as reachable by
this routine, and therefore does not get a landing pad -- but later on,
reachable_handlers considers that region reachable after all, and then
crashes because the landing pad label is NULL ... 

Any suggestions where to look further?

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]