This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
fix ICE caused by profile mismatch (issue5533075)
- From: xur at google dot com (Rong Xu)
- To: reply at codereview dot appspotmail dot com,gcc-patches at gcc dot gnu dot org
- Date: Wed, 11 Jan 2012 14:55:47 -0800 (PST)
- Subject: fix ICE caused by profile mismatch (issue5533075)
This patch fixes the ICE when building the histrogram for
value profile. It's casued by profile mismatch.
Tested with SPEC2000 INT.
This is for google branches.
2012-01-11 Rong Xu <xur@google.com>
* gcc/profile.c (compute_value_histograms): ignore the
histrogram when the counters not found in gcda file.
Index: gcc/profile.c
===================================================================
--- gcc/profile.c (revision 183109)
+++ gcc/profile.c (working copy)
@@ -790,10 +790,14 @@
gcov_type *histogram_counts[GCOV_N_VALUE_COUNTERS];
gcov_type *act_count[GCOV_N_VALUE_COUNTERS];
gcov_type *aact_count;
- bool warned = false;
+ bool warned[GCOV_N_VALUE_COUNTERS];
+ static const char *const ctr_names[] = GCOV_COUNTER_NAMES;
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
- n_histogram_counters[t] = 0;
+ {
+ n_histogram_counters[t] = 0;
+ warned[t] = 0;
+ }
for (i = 0; i < VEC_length (histogram_value, values); i++)
{
@@ -829,18 +833,17 @@
t = (int) hist->type;
aact_count = act_count[t];
+ /* If the counter cannot be found in gcda file, skip this
+ histogram and give a warning. */
if (aact_count == 0)
{
- /* this can only happen when FDO uses LIPO profiles where
- we have HIST_TYPE_INDIR_CALL_TOPN counters in gcda
- files. */
- gcc_assert (hist->type == HIST_TYPE_INDIR_CALL);
- if (!warned && flag_opt_info >= OPT_INFO_MIN)
- warning (0, "cannot find INDIR_CALL counters in func %s.",
+ if (!warned[t] && flag_opt_info >= OPT_INFO_MIN)
+ warning (0, "cannot find %s counters in function %s.",
+ ctr_names[COUNTER_FOR_HIST_TYPE(t)],
IDENTIFIER_POINTER (
DECL_ASSEMBLER_NAME (current_function_decl)));
hist->n_counters = 0;
- warned = true;
+ warned[t] = true;
continue;
}
act_count[t] += hist->n_counters;
--
This patch is available for review at http://codereview.appspot.com/5533075