From 8a5df2ceff755c1f799239f751f78e87cbfdcb36 Mon Sep 17 00:00:00 2001 From: rakdver Date: Wed, 1 Sep 2004 20:58:55 +0000 Subject: * Makefile.in (rtl-profile.o, value-prof.o): Add GCC_H dependency. * common.opt (fspeculative-prefetching): New. * flags.h (flag_speculative_prefetching_set): Declare. * gcov-io.c (gcov_write_counter, gcov_read_counter): Allow negative values. * opts.c (flag_sepculative_prefetching_set): New variable. (common_handle_option): Handle -fspeculative-prefetching. * passes.c (rest_of_compilation): Ditto. * profile.c (instrument_values, compute_value_histograms, branch_prob): Use vectors instead of arrays. * toplev.c (process_options): Handle -fspeculative-prefetching. * rtl-profile.c: Include ggc.h. (rtl_gen_interval_profiler, rtl_gen_pow2_profiler, rtl_gen_one_value_profiler_no_edge_manipulation, rtl_gen_one_value_profiler, rtl_gen_const_delta_profiler): Type of argument changed. * tree-profile.c (tree_gen_interval_profiler, tree_gen_pow2_profiler, tree_gen_one_value_profiler, tree_gen_const_delta_profiler): Type of argument changed. * value-prof.c: Include ggc.h. (NOPREFETCH_RANGE_MIN, NOPREFETCH_RANGE_MAX): New macros. (insn_prefetch_values_to_profile, find_mem_reference_1, find_mem_reference_2, find_mem_reference, gen_speculative_prefetch, speculative_prefetching_transform): New. (value_profile_transformations): Call speculative_prefetching_transform. (insn_values_to_profile): Call insn_prefetch_values_to_profile. (insn_divmod_values_to_profile, rtl_find_values_to_profile, tree_find_values_to_profile, find_values to profile): Use vectors instead of arrays. (free_profiled_values): Removed. * value-prof.h (struct histogram_value): Renamed to struct histogram_value_t. (histogram_value, histogram_values): New types. (find_values_to_profile): Declaration changed. (free_profiled_values): Removed. (struct profile_hooks): Type of argument of the hooks changed to histogram_value. * doc/invoke.texi (-fspeculative-prefetching): Document. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86930 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/value-prof.h | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'gcc/value-prof.h') diff --git a/gcc/value-prof.h b/gcc/value-prof.h index e71e5e56464..60215fde30d 100644 --- a/gcc/value-prof.h +++ b/gcc/value-prof.h @@ -39,14 +39,15 @@ enum hist_type /* The value to measure. */ /* The void *'s are either rtx or tree, depending on which IR is in use. */ -struct histogram_value +struct histogram_value_t GTY(()) { - void * value; /* The value to profile. */ - enum machine_mode mode; /* And its mode. */ - void * seq; /* Insns required to count the profiled value. */ - void * insn; /* Insn before that to measure. */ - enum hist_type type; /* Type of information to measure. */ - unsigned n_counters; /* Number of required counters. */ + PTR GTY ((skip (""))) value; /* The value to profile. */ + enum machine_mode mode; /* And its mode. */ + PTR GTY ((skip (""))) seq; /* Insns required to count the + profiled value. */ + PTR GTY ((skip (""))) insn; /* Insn before that to measure. */ + enum hist_type type; /* Type of information to measure. */ + unsigned n_counters; /* Number of required counters. */ union { struct @@ -63,13 +64,18 @@ struct histogram_value } hdata; /* Profiled information specific data. */ }; +typedef struct histogram_value_t *histogram_value; + +DEF_VEC_P(histogram_value); + +typedef VEC(histogram_value) *histogram_values; + /* Hooks registration. */ extern void rtl_register_value_prof_hooks (void); extern void tree_register_value_prof_hooks (void); /* IR-independent entry points. */ -extern void find_values_to_profile (unsigned *, struct histogram_value **); -extern void free_profiled_values (unsigned, struct histogram_value *); +extern void find_values_to_profile (histogram_values *); extern bool value_profile_transformations (void); /* External declarations for edge-based profiling. */ @@ -78,18 +84,17 @@ struct profile_hooks { void (*gen_edge_profiler) (int, edge); /* Insert code to increment the interval histogram counter. */ - void (*gen_interval_profiler) (struct histogram_value *, unsigned, unsigned); + void (*gen_interval_profiler) (histogram_value, unsigned, unsigned); /* Insert code to increment the power of two histogram counter. */ - void (*gen_pow2_profiler) (struct histogram_value *, unsigned, unsigned); + void (*gen_pow2_profiler) (histogram_value, unsigned, unsigned); /* Insert code to find the most common value. */ - void (*gen_one_value_profiler) (struct histogram_value *, unsigned, unsigned); + void (*gen_one_value_profiler) (histogram_value, unsigned, unsigned); /* Insert code to find the most common value of a difference between two evaluations of an expression. */ - void (*gen_const_delta_profiler) (struct histogram_value *, unsigned, - unsigned); + void (*gen_const_delta_profiler) (histogram_value, unsigned, unsigned); FILE * (*profile_dump_file) (void); }; -- cgit v1.2.1