]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/51510 (gcc for arm-linux-gnueabi ICEs on gcc.c-torture/execute/20050...
authorJakub Jelinek <jakub@redhat.com>
Mon, 12 Dec 2011 19:43:49 +0000 (20:43 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 12 Dec 2011 19:43:49 +0000 (20:43 +0100)
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

gcc/ChangeLog
gcc/calls.c

index b1b83aca5d25cb9f898eb33a5544641900bb5e25..1a1a038fe680c4bb13e38d4bba319a0fb283e526 100644 (file)
@@ -1,5 +1,9 @@
 2011-12-12  Jakub Jelinek  <jakub@redhat.com>
 
+       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  <jakub@redhat.com>
 
index d5779f38d4c163d8f8b3c8643759edd6104af266..c978e61376819b0163ee18cb5e70abe02b9eae40 100644 (file)
@@ -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);
            }