From 128c61eeb9dd76409237dcfae26dbbc0d0db34de Mon Sep 17 00:00:00 2001 From: Martin Jambor Date: Wed, 7 Sep 2011 16:31:40 +0200 Subject: [PATCH] re PR middle-end/50301 (416.gamess in SPEC CPU 2006 failed to build with LTO) 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. From-SVN: r178640 --- gcc/ChangeLog | 7 +++++++ gcc/ipa-cp.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4df7eae2ccb..d7b8687a943 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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 diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index f6e083e6654..f440b1dc74d 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.30.2