From: Jakub Jelinek Date: Mon, 12 Dec 2011 19:43:49 +0000 (+0100) Subject: re PR middle-end/51510 (gcc for arm-linux-gnueabi ICEs on gcc.c-torture/execute/20050... X-Git-Tag: releases/gcc-4.6.3~269 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41ceed5b4de04681dec23422500b9ebb1780f63e;p=thirdparty%2Fgcc.git re PR middle-end/51510 (gcc for arm-linux-gnueabi ICEs on gcc.c-torture/execute/20050713-1.c due to PR50074+PR51323 fix) PR middle-end/51510 * calls.c (internal_arg_pointer_based_exp_scan): Don't use VEC_safe_grow_cleared if idx is smaller than VEC_length. From-SVN: r182260 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b1b83aca5d25..1a1a038fe680 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2011-12-12 Jakub Jelinek + PR middle-end/51510 + * calls.c (internal_arg_pointer_based_exp_scan): Don't use + VEC_safe_grow_cleared if idx is smaller than VEC_length. + Backported from mainline 2011-12-11 Jakub Jelinek diff --git a/gcc/calls.c b/gcc/calls.c index d5779f38d4c1..c978e6137681 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1595,9 +1595,11 @@ internal_arg_pointer_based_exp_scan (void) val = internal_arg_pointer_based_exp (SET_SRC (set), false); if (val != NULL_RTX) { - VEC_safe_grow_cleared (rtx, heap, - internal_arg_pointer_exp_state.cache, - idx + 1); + if (idx + >= VEC_length (rtx, internal_arg_pointer_exp_state.cache)) + VEC_safe_grow_cleared (rtx, heap, + internal_arg_pointer_exp_state.cache, + idx + 1); VEC_replace (rtx, internal_arg_pointer_exp_state.cache, idx, val); }