From e37dcf4530a0801513792535629542f50110b198 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Fri, 14 Aug 2015 16:29:38 +0000 Subject: re PR middle-end/67133 (ICE at -Os and above on x86_64-linux-gnu in gimple_op, at gimple.h:2274) PR middle-end/67133 * gimple.c (infer_nonnull_range_by_attribute): Check that the nonnull argument position is not outside function arguments. * gcc.dg/torture/pr67133.c: New test. From-SVN: r226896 --- gcc/gimple.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'gcc/gimple.c') diff --git a/gcc/gimple.c b/gcc/gimple.c index cca328a..1bfa8c7 100644 --- 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; + } } } } -- cgit v1.1