aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2015-02-11 09:04:38 -0800
committerRichard Henderson <rth@gcc.gnu.org>2015-02-11 09:04:38 -0800
commit5b1441be76eb4e340f324e7defb3b644e1f7a6a7 (patch)
tree90b1d04e754f5e7f37babbfae6555c3a029f693f /gcc/tree-eh.c
parent3292dd408163da24f70fb93e962d0b9cdf20f74a (diff)
downloadgcc-5b1441be76eb4e340f324e7defb3b644e1f7a6a7.zip
gcc-5b1441be76eb4e340f324e7defb3b644e1f7a6a7.tar.gz
gcc-5b1441be76eb4e340f324e7defb3b644e1f7a6a7.tar.bz2
re PR sanitizer/65000 (ICE in in expand_builtin_eh_common, at except.c:2072)
PR sanitize/65000 * tree-eh.c (mark_reachable_handlers): Mark source and destination regions of __builtin_eh_copy_values. From-SVN: r220626
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r--gcc/tree-eh.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 159fa2b..3c45f37 100644
--- a/gcc/tree-eh.c
+++ b/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;
}