aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2011-10-02 16:28:18 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2011-10-02 14:28:18 +0000
commit78e5ce9f1eb789154f083296ae85a7582bc36a97 (patch)
tree871d28c20325f9dbd041d7fdb47759d76fd6e9a1 /gcc
parent1c52c601483ef72fe462626b373599bb8118e6a0 (diff)
downloadgcc-78e5ce9f1eb789154f083296ae85a7582bc36a97.zip
gcc-78e5ce9f1eb789154f083296ae85a7582bc36a97.tar.gz
gcc-78e5ce9f1eb789154f083296ae85a7582bc36a97.tar.bz2
* ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
From-SVN: r179428
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/ipa-inline-analysis.c20
2 files changed, 13 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e556b12..b8eef47 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
2011-10-02 Jan Hubicka <jh@suse.cz>
+ * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
+
* ipa-inline-analysis.c (reset_inline_edge_summary): New function.
(reset_inline_summary): New function.
(compute_inline_parameters, inline_node_removal_hook,
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 4e97943..8499cb5 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -795,13 +795,17 @@ inline_summary_alloc (void)
static void
reset_inline_edge_summary (struct cgraph_edge *e)
{
- struct inline_edge_summary *es = inline_edge_summary (e);
+ if (e->uid
+ < (int)VEC_length (inline_edge_summary_t, inline_edge_summary_vec))
+ {
+ struct inline_edge_summary *es = inline_edge_summary (e);
- es->call_stmt_size = es->call_stmt_time =0;
- if (es->predicate)
- pool_free (edge_predicate_pool, es->predicate);
- es->predicate = NULL;
- VEC_free (inline_param_summary_t, heap, es->param);
+ es->call_stmt_size = es->call_stmt_time =0;
+ if (es->predicate)
+ pool_free (edge_predicate_pool, es->predicate);
+ es->predicate = NULL;
+ VEC_free (inline_param_summary_t, heap, es->param);
+ }
}
/* We are called multiple time for given function; clear
@@ -1044,9 +1048,7 @@ inline_edge_removal_hook (struct cgraph_edge *edge, void *data ATTRIBUTE_UNUSED)
{
if (edge_growth_cache)
reset_edge_growth_cache (edge);
- if (edge->uid
- < (int)VEC_length (inline_edge_summary_t, inline_edge_summary_vec))
- reset_inline_edge_summary (edge);
+ reset_inline_edge_summary (edge);
}