Hi, On Thu, Jun 06, 2013 at 08:10:13AM -0700, Dehao Chen wrote: > Hi, Martin, > > Yes, your patch can fix my case. Thanks a lot for the fix.
good. However, as usual when I'm trying to do things too quickly, I made a stupid mistaker and testing has revealed I picked exactly the wrong branch in the second hunk. So this is the correct patch, now after proper bootstrapping and testing on x86_64-linux. Since the intent is clearly the same as the approved patch, I intend to commit it later today/early tomorrow, unless there are any objections. Thanks and sorry again, Martin 2013-06-07 Martin Jambor <mjam...@suse.cz> * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is within bounds at the beginning of the function. Index: src/gcc/ipa-cp.c =================================================================== --- src.orig/gcc/ipa-cp.c +++ src/gcc/ipa-cp.c @@ -1481,7 +1481,8 @@ ipa_get_indirect_edge_target_1 (struct c tree otr_type; tree t; - if (param_index == -1) + if (param_index == -1 + || known_vals.length () <= (unsigned int) param_index) return NULL_TREE; if (!ie->indirect_info->polymorphic) @@ -1516,8 +1517,7 @@ ipa_get_indirect_edge_target_1 (struct c t = NULL; } else - t = (known_vals.length () > (unsigned int) param_index - ? known_vals[param_index] : NULL); + t = known_vals[param_index]; if (t && TREE_CODE (t) == ADDR_EXPR