+2009-04-04 Jan Hubicka <jh@suse.cz>
+
+ * except.c (sjlj_find_directly_reachable_regions): Be ready for removed toplevel
+ regions.
+ (sjlj_mark_call_sites): Likewise.
+
2009-04-04 Dave Korn <dave.korn.cygwin@gmail.com>
* config.gcc (cygwin tm_file): Add cygwin-stdint.h.
continue;
region = VEC_index (eh_region, cfun->eh->region_array, INTVAL (XEXP (note, 0)));
+ if (!region)
+ continue;
type_thrown = NULL_TREE;
if (region->type == ERT_THROW)
continue;
note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
- if (!note)
+
+ /* Calls that are known to not throw need not be marked. */
+ if (note && INTVAL (XEXP (note, 0)) <= 0)
+ continue;
+
+ if (note)
+ region = VEC_index (eh_region, cfun->eh->region_array, INTVAL (XEXP (note, 0)));
+ else
+ region = NULL;
+
+ if (!region)
{
/* Calls (and trapping insns) without notes are outside any
exception handling region in this function. Mark them as
continue;
}
else
- {
- /* Calls that are known to not throw need not be marked. */
- if (INTVAL (XEXP (note, 0)) <= 0)
- continue;
-
- region = VEC_index (eh_region, cfun->eh->region_array, INTVAL (XEXP (note, 0)));
- this_call_site = lp_info[region->region_number].call_site_index;
- }
+ this_call_site = lp_info[region->region_number].call_site_index;
if (this_call_site == last_call_site)
continue;