Hi! My understanding is that RT_MUST_NOT_THROW regions shouldn't ever propagate exceptions to outer regions, they'd terminate the program instead. So, we don't need to mark outer regions as possibly needing to handle throw.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2011-04-18 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/48611 * tree-eh.c (note_eh_region_may_contain_throw): Don't propagate beyond ERT_MUST_NOT_THROW region. --- gcc/tree-eh.c.jj 2011-01-25 18:40:08.000000000 +0100 +++ gcc/tree-eh.c 2011-04-18 15:28:17.000000000 +0200 @@ -849,6 +849,8 @@ note_eh_region_may_contain_throw (eh_reg { while (bitmap_set_bit (eh_region_may_contain_throw_map, region->index)) { + if (region->type == ERT_MUST_NOT_THROW) + break; region = region->outer; if (region == NULL) break; Jakub