27 lines
780 B
Diff
27 lines
780 B
Diff
|
2015-02-10 Richard Henderson <rth@redhat.com>
|
||
|
|
||
|
PR sanitizer/65000
|
||
|
* tree-eh.c (mark_reachable_handlers): Mark regions mentioned in
|
||
|
__builtin_eh_copy_values as reachable.
|
||
|
|
||
|
--- gcc/tree-eh.c
|
||
|
+++ gcc/tree-eh.c
|
||
|
@@ -3859,6 +3859,17 @@ mark_reachable_handlers (sbitmap *r_reachablep, sbitmap *lp_reachablep)
|
||
|
gimple_eh_dispatch_region (
|
||
|
as_a <geh_dispatch *> (stmt)));
|
||
|
break;
|
||
|
+ case GIMPLE_CALL:
|
||
|
+ if (gimple_call_builtin_p (stmt, BUILT_IN_EH_COPY_VALUES))
|
||
|
+ for (int i = 0; i < 2; ++i)
|
||
|
+ {
|
||
|
+ tree rt = gimple_call_arg (stmt, i);
|
||
|
+ HOST_WIDE_INT ri = tree_to_shwi (rt);
|
||
|
+
|
||
|
+ gcc_assert (ri = (int)ri);
|
||
|
+ bitmap_set_bit (r_reachable, ri);
|
||
|
+ }
|
||
|
+ break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|