aboutsummaryrefslogtreecommitdiff
path: root/gcc/profile.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2005-07-28 23:48:38 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2005-07-28 21:48:38 +0000
commit8a76829ccfe1b5cb484f79a8b7ba02299f228782 (patch)
tree377bb80f4913f0795be700e07ba6b59ac515ec9f /gcc/profile.c
parentc5a4444c50a61d6f787d4d238ed007ad626a3f6d (diff)
downloadgcc-8a76829ccfe1b5cb484f79a8b7ba02299f228782.zip
gcc-8a76829ccfe1b5cb484f79a8b7ba02299f228782.tar.gz
gcc-8a76829ccfe1b5cb484f79a8b7ba02299f228782.tar.bz2
Makefile.in (rtl-profile.o): Kill all traces of it.
* Makefile.in (rtl-profile.o): Kill all traces of it. * common.opt (fspeculative-prefetching, ftree-based-profiling): Kill. * coverage.h (rtl_coverage_counter_ref): Kill. * opts.c (flag_speculative_prefetching_set): Kill. (flag_loop_optimize_set): New. (common_handle_option): Disable loop optimizer when profiling; do not handle speculative prefetching. * passes.c (init_optimization_passes): Replace pass_profiling combo by branch_prob pass. * profile.c (compute_value_histograms): Update for simplified value profiles. (rtl_register_profile_hooks): Kill. (pass_profiling): Kill. (rest_of_handle_branch_prob): Do not profile. * toplev.c (process_options): Remove speculative prefetching. * toplev.h (flag_tree_based_profiling): Kill. * tree-profile.c (prepare_instrumented_value, tree_gen_interval_profiler, tree_gen_pow2_profiler, tree_gen_one_value_profiler, do_tree_profiling): Update for simplified datastructures. * value-prof.c: Add comment that speculative prefetching was dropped; update rest of file for simplified datastructures. (NOPREFETCH_RANGE_MIN, NOPREFETCH_RANGE_MAX, rtl_divmod_values_to_profile, insn_prefetch_values_to_profile, find_mem_reference_1, find_mem_reference_2, find_mem_reference, rtl_values_to_profile, rtl_divmod_fixed_value, rtl_mod_pow2, rtl_mod_subtract, gen_speculative_prefetch, rtl_divmod_fixed_value_transform, rtl_mod_pow2_value_transform, rtl_mod_subtract_transform, speculative_prefetching_transform): Kill. (gate_handle_value_profile_transformations, rest_of_handle_value_profile_transformations, pass_value_profile_transformations): Kill. * value-prof.h (histogram_value_t): Remove IL based unions. (rtl_register_value_prof_hooks, rtl_register_profile_hooks, rtl_profile_hooks): Remove hooks. * invoke.texi (-ftree-based-profiling, -fspeculative-prefetching): Kill. * inliner-1.c: Do not dump everything. * tree-prof.exp: Do not pass -ftree-based-profiling. * bprob.exp: Likewise. From-SVN: r102522
Diffstat (limited to 'gcc/profile.c')
-rw-r--r--gcc/profile.c79
1 files changed, 10 insertions, 69 deletions
diff --git a/gcc/profile.c b/gcc/profile.c
index 1e0c3b8..113927f 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -651,7 +651,7 @@ compute_value_histograms (histogram_values values)
gcov_type *histogram_counts[GCOV_N_VALUE_COUNTERS];
gcov_type *act_count[GCOV_N_VALUE_COUNTERS];
gcov_type *aact_count;
- histogram_value hist;
+ histogram_value hist = 0;
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
n_histogram_counters[t] = 0;
@@ -683,7 +683,8 @@ compute_value_histograms (histogram_values values)
for (i = 0; i < VEC_length (histogram_value, values); i++)
{
- rtx hist_list = NULL_RTX;
+ tree stmt = hist->hvalue.stmt;
+ stmt_ann_t ann = get_stmt_ann (stmt);
hist = VEC_index (histogram_value, values, i);
t = (int) hist->type;
@@ -691,29 +692,12 @@ compute_value_histograms (histogram_values values)
aact_count = act_count[t];
act_count[t] += hist->n_counters;
- if (!ir_type ())
- {
- for (j = hist->n_counters; j > 0; j--)
- hist_list = alloc_EXPR_LIST (0, GEN_INT (aact_count[j - 1]),
- hist_list);
- hist_list = alloc_EXPR_LIST (0,
- copy_rtx (hist->hvalue.rtl.value), hist_list);
- hist_list = alloc_EXPR_LIST (0, GEN_INT (hist->type), hist_list);
- REG_NOTES (hist->hvalue.rtl.insn) =
- alloc_EXPR_LIST (REG_VALUE_PROFILE, hist_list,
- REG_NOTES (hist->hvalue.rtl.insn));
- }
- else
- {
- tree stmt = hist->hvalue.tree.stmt;
- stmt_ann_t ann = get_stmt_ann (stmt);
- hist->hvalue.tree.next = ann->histograms;
- ann->histograms = hist;
- hist->hvalue.tree.counters =
- xmalloc (sizeof (gcov_type) * hist->n_counters);
- for (j = 0; j < hist->n_counters; j++)
- hist->hvalue.tree.counters[j] = aact_count[j];
- }
+ hist->hvalue.next = ann->histograms;
+ ann->histograms = hist;
+ hist->hvalue.counters =
+ xmalloc (sizeof (gcov_type) * hist->n_counters);
+ for (j = 0; j < hist->n_counters; j++)
+ hist->hvalue.counters[j] = aact_count[j];
}
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
@@ -1324,55 +1308,13 @@ tree_register_profile_hooks (void)
profile_hooks = &tree_profile_hooks;
}
-/* Set up hooks to enable RTL-based profiling. */
-
-void
-rtl_register_profile_hooks (void)
-{
- gcc_assert (!ir_type ());
- profile_hooks = &rtl_profile_hooks;
-}
-static bool
-gate_handle_profiling (void)
-{
- return optimize > 0
- || (!flag_tree_based_profiling
- && (profile_arc_flag || flag_test_coverage
- || flag_branch_probabilities));
-}
-
-struct tree_opt_pass pass_profiling =
-{
- NULL, /* name */
- gate_handle_profiling, /* gate */
- NULL, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- 0, /* tv_id */
- 0, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0, /* todo_flags_finish */
- 0 /* letter */
-};
-
-
/* Do branch profiling and static profile estimation passes. */
static void
rest_of_handle_branch_prob (void)
{
struct loops loops;
- rtl_register_profile_hooks ();
- rtl_register_value_prof_hooks ();
-
- if ((profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
- && !flag_tree_based_profiling)
- branch_prob ();
-
/* Discover and record the loop depth at the head of each basic
block. The loop infrastructure does the real job for us. */
flow_loops_find (&loops);
@@ -1382,8 +1324,7 @@ rest_of_handle_branch_prob (void)
/* Estimate using heuristics if no profiling info is available. */
if (flag_guess_branch_prob
- && (profile_status == PROFILE_ABSENT
- || (profile_status == PROFILE_READ && !flag_tree_based_profiling)))
+ && profile_status == PROFILE_ABSENT)
estimate_probability (&loops);
flow_loops_free (&loops);