OSDN Git Service

2011-09-07 Martin Jambor <mjambor@suse.cz>
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Sep 2011 14:31:40 +0000 (14:31 +0000)
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Sep 2011 14:31:40 +0000 (14:31 +0000)
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
gcc/ipa-cp.c

index 4df7eae..d7b8687 100644 (file)
@@ -1,5 +1,12 @@
 2011-09-07  Martin Jambor  <mjambor@suse.cz>
 
+       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  <mjambor@suse.cz>
+
        PR tree-optimization/49911
        * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
        enumerations to the corresponding plain integer type.
index f6e083e..f440b1d 100644 (file)
@@ -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))