https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67133

--- Comment #22 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
If infer_nonnull_range_by_attribute can't rely on gimple_call_fntype then we
indeed need to add a check there.

So like this?
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2694,10 +2694,13 @@ infer_nonnull_range_by_attribute (gimple stmt, tree op)
      /* Now see if op appears in the nonnull list.  */
      for (tree t = TREE_VALUE (attrs); t; t = TREE_CHAIN (t))
        {
-         int idx = TREE_INT_CST_LOW (TREE_VALUE (t)) - 1;
-         tree arg = gimple_call_arg (stmt, idx);
-         if (operand_equal_p (op, arg, 0))
-       return true;
+         unsigned int idx = TREE_INT_CST_LOW (TREE_VALUE (t)) - 1;
+         if (idx < gimple_call_num_args (stmt))
+       {
+         tree arg = gimple_call_arg (stmt, idx);
+         if (operand_equal_p (op, arg, 0))
+           return true;
+       }
        }
    }
     }

Reply via email to