From: Jan Hubicka Date: Sun, 2 Oct 2011 15:06:11 +0000 (+0200) Subject: * cgraphunit.c (verify_edge_count_and_frequency): Bounds check. X-Git-Tag: releases/gcc-4.7.0~3427 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4762f56169a78b4a15e8c7b6bb96ed3ceedfcc4c;p=thirdparty%2Fgcc.git * cgraphunit.c (verify_edge_count_and_frequency): Bounds check. From-SVN: r179430 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 05539e6355c3..4aa277aac4b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2011-10-02 Jan Hubicka + * cgraphunit.c (verify_edge_count_and_frequency): Bounds check. + * cgraphunit.c (ipa_passes): Remove unrechable nodes. * lto-streamer-out.c (produce_symtab): Skip unused extern declarations. * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 5964570d882d..c75c1300408d 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -426,7 +426,9 @@ verify_edge_count_and_frequency (struct cgraph_edge *e) Remove this once edges are actualy removed from the function at that time. */ && (e->frequency || (inline_edge_summary_vec - && !inline_edge_summary (e)->predicate)) + && ((VEC_length(inline_edge_summary_t, inline_edge_summary_vec) + <= (unsigned) e->uid) + || !inline_edge_summary (e)->predicate))) && (e->frequency != compute_call_stmt_bb_frequency (e->caller->decl, gimple_bb (e->call_stmt))))