diff options
author | Jan Hubicka <jh@suse.cz> | 2011-10-02 16:28:18 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2011-10-02 14:28:18 +0000 |
commit | 78e5ce9f1eb789154f083296ae85a7582bc36a97 (patch) | |
tree | 871d28c20325f9dbd041d7fdb47759d76fd6e9a1 /gcc/ipa-inline-analysis.c | |
parent | 1c52c601483ef72fe462626b373599bb8118e6a0 (diff) | |
download | gcc-78e5ce9f1eb789154f083296ae85a7582bc36a97.tar.gz |
* ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
From-SVN: r179428
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r-- | gcc/ipa-inline-analysis.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 4e97943eb9c..8499cb57f42 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); } |