From 7eca07679863f0385a4b125517a302cb489e4148 Mon Sep 17 00:00:00 2001
From: Jan Hubicka <jh@suse.cz>
Date: Wed, 17 Mar 2004 12:42:10 +0100
Subject: [PATCH] cfgrtl.c (rtl_create_basic_block): Pre-allocate
 basic_block_info array.

	* cfgrtl.c (rtl_create_basic_block): Pre-allocate basic_block_info
	array.

From-SVN: r79585
---
 gcc/ChangeLog | 5 +++++
 gcc/cfgrtl.c  | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2cfe0c100fa7..ea5a37daabe7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-17  Jan Hubicka  <jh@suse.cz>
+
+	* cfgrtl.c (rtl_create_basic_block): Pre-allocate basic_block_info
+	array.
+
 2004-03-17  James E Wilson  <wilson@specifixinc.com>
 
 	* config/mips/mips.md (zero_extendsidi2): Add length attribute.
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 3363a2d97204..f38c53c5eda6 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -338,8 +338,12 @@ rtl_create_basic_block (void *headp, void *endp, basic_block after)
   rtx head = headp, end = endp;
   basic_block bb;
 
-  /* Place the new block just after the end.  */
-  VARRAY_GROW (basic_block_info, last_basic_block + 1);
+  /* Grow the basic block array if needed.  */
+  if ((size_t) last_basic_block >= VARRAY_SIZE (basic_block_info))
+    {
+      size_t new_size = last_basic_block + (last_basic_block + 3) / 4;
+      VARRAY_GROW (basic_block_info, new_size);
+    }
 
   n_basic_blocks++;
 
-- 
GitLab