From c8fc6b84e7bda098423292ef0555e8e301e8242c Mon Sep 17 00:00:00 2001 From: jamborm Date: Wed, 7 Sep 2011 14:31:40 +0000 Subject: [PATCH] 2011-09-07 Martin Jambor PR middle-end/50301 * ipa-cp.c (find_more_values_for_callers_subset): Check jump function index bounds. (perhaps_add_new_callers): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178640 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/ipa-cp.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4df7eae..d7b8687 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2011-09-07 Martin Jambor + PR middle-end/50301 + * ipa-cp.c (find_more_values_for_callers_subset): Check jump + function index bounds. + (perhaps_add_new_callers): Likewise. + +2011-09-07 Martin Jambor + PR tree-optimization/49911 * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced enumerations to the corresponding plain integer type. diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index f6e083e..f440b1d 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -2052,8 +2052,12 @@ find_more_values_for_callers_subset (struct cgraph_node *node, struct ipa_jump_func *jump_func; tree t; + if (i >= ipa_get_cs_argument_count (IPA_EDGE_REF (cs))) + { + newval = NULL_TREE; + break; + } jump_func = ipa_get_ith_jump_func (IPA_EDGE_REF (cs), i); - t = ipa_value_from_jfunc (IPA_NODE_REF (cs->caller), jump_func); if (!t || (newval @@ -2123,6 +2127,11 @@ perhaps_add_new_callers (struct cgraph_node *node, struct ipcp_value *val) if (!val) continue; + if (i >= ipa_get_cs_argument_count (args)) + { + insufficient = true; + break; + } jump_func = ipa_get_ith_jump_func (args, i); t = ipa_value_from_jfunc (caller_info, jump_func); if (!t || !values_equal_for_ipcp_p (val, t)) -- 2.7.4