value-prof.c (value_prof_hooks): Remove.
* value-prof.c (value_prof_hooks): Remove. (struct value_prof_hooks): Remove. (gimple_value_prof_hooks): Remove. (gimple_register_value_prof_hooks): Remove. (find_values_to_profile): Remove. (value_profile_transformations): Remove. (gimple_value_profile_transformations): No longer static. (gimple_find_values_to_profile): Likewise. * value-prof.h (gimple_register_value_prof_hooks): Remove prototype. (find_values_to_profile): Likewise. (value_profile_transformations): Likewise. (tree_register_profile_hooks): Likewise. (struct profile_hooks): Remove. (tree_profile_hooks): Remove. (gimple_find_values_to_profile): New protoype. (gimple_value_profile_transformations): Likewise. (gimple_init_edge_profiler): Likewise. (gimple_gen_edge_profiler): Likewise. (gimple_gen_interval_profiler): Likewise. (gimple_gen_pow2_profiler): Likewise. (gimple_gen_one_value_profiler): Likewise. (gimple_gen_ic_profiler): Likewise. (gimple_gen_ic_func_profiler): Likewise. (gimple_gen_const_delta_profiler): Likewise. (gimple_gen_average_profiler): Likewise. (gimple_gen_ior_profiler): Likewise. * profile.c (profile_hooks): Remove. (instrument_edges): Call profiling functions directly instead of through removed profile_hooks. (instrument_values): Likewise. (branch_prob): Call gimple_find_values_to_profile instead of removed find_values_to_profile. Call gimple_init_edge_profiler instead of removed hook. (tree_register_profile_hooks): Remove. * tree-profile.c (tree_init_ic_make_global_vars): Rename to init_ic_make_global_vars. (tree_init_edge_profiler): Rename to gimple_init_edge_profiler and no longer static. (tree_gen_edge_profiler, tree_gen_interval_profiler, tree_gen_pow2_profiler, tree_gen_one_value_profiler, tree_gen_ic_profiler, tree_gen_ic_func_profiler, tree_gen_const_delta_profiler, tree_gen_average_profiler, tree_gen_ior_profiler): Similarly renamed and no longer static. (tree_profiling): Do not initialize tree profiling hooks. (tree_profile_hooks): Remove. From-SVN: r168141
This commit is contained in:
parent
74d272a2e7
commit
e0cb7e1ef4
|
@ -1,3 +1,52 @@
|
|||
2010-12-21 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
De-hookize profile infrastructure.
|
||||
* value-prof.c (value_prof_hooks): Remove.
|
||||
(struct value_prof_hooks): Remove.
|
||||
(gimple_value_prof_hooks): Remove.
|
||||
(gimple_register_value_prof_hooks): Remove.
|
||||
(find_values_to_profile): Remove.
|
||||
(value_profile_transformations): Remove.
|
||||
(gimple_value_profile_transformations): No longer static.
|
||||
(gimple_find_values_to_profile): Likewise.
|
||||
* value-prof.h (gimple_register_value_prof_hooks): Remove prototype.
|
||||
(find_values_to_profile): Likewise.
|
||||
(value_profile_transformations): Likewise.
|
||||
(tree_register_profile_hooks): Likewise.
|
||||
(struct profile_hooks): Remove.
|
||||
(tree_profile_hooks): Remove.
|
||||
(gimple_find_values_to_profile): New protoype.
|
||||
(gimple_value_profile_transformations): Likewise.
|
||||
(gimple_init_edge_profiler): Likewise.
|
||||
(gimple_gen_edge_profiler): Likewise.
|
||||
(gimple_gen_interval_profiler): Likewise.
|
||||
(gimple_gen_pow2_profiler): Likewise.
|
||||
(gimple_gen_one_value_profiler): Likewise.
|
||||
(gimple_gen_ic_profiler): Likewise.
|
||||
(gimple_gen_ic_func_profiler): Likewise.
|
||||
(gimple_gen_const_delta_profiler): Likewise.
|
||||
(gimple_gen_average_profiler): Likewise.
|
||||
(gimple_gen_ior_profiler): Likewise.
|
||||
* profile.c (profile_hooks): Remove.
|
||||
(instrument_edges): Call profiling functions directly instead
|
||||
of through removed profile_hooks.
|
||||
(instrument_values): Likewise.
|
||||
(branch_prob): Call gimple_find_values_to_profile instead of
|
||||
removed find_values_to_profile.
|
||||
Call gimple_init_edge_profiler instead of removed hook.
|
||||
(tree_register_profile_hooks): Remove.
|
||||
* tree-profile.c (tree_init_ic_make_global_vars): Rename to
|
||||
init_ic_make_global_vars.
|
||||
(tree_init_edge_profiler): Rename to gimple_init_edge_profiler
|
||||
and no longer static.
|
||||
(tree_gen_edge_profiler, tree_gen_interval_profiler,
|
||||
tree_gen_pow2_profiler, tree_gen_one_value_profiler,
|
||||
tree_gen_ic_profiler, tree_gen_ic_func_profiler,
|
||||
tree_gen_const_delta_profiler, tree_gen_average_profiler,
|
||||
tree_gen_ior_profiler): Similarly renamed and no longer static.
|
||||
(tree_profiling): Do not initialize tree profiling hooks.
|
||||
(tree_profile_hooks): Remove.
|
||||
|
||||
2010-12-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/46880
|
||||
|
|
|
@ -72,9 +72,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
|
||||
#include "profile.h"
|
||||
|
||||
/* Hooks for profiling. */
|
||||
static struct profile_hooks* profile_hooks;
|
||||
|
||||
struct bb_info {
|
||||
unsigned int count_valid : 1;
|
||||
|
||||
|
@ -141,7 +138,7 @@ instrument_edges (struct edge_list *el)
|
|||
fprintf (dump_file, "Edge %d to %d instrumented%s\n",
|
||||
e->src->index, e->dest->index,
|
||||
EDGE_CRITICAL_P (e) ? " (and split)" : "");
|
||||
(profile_hooks->gen_edge_profiler) (num_instr_edges++, e);
|
||||
gimple_gen_edge_profiler (num_instr_edges++, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -202,31 +199,31 @@ instrument_values (histogram_values values)
|
|||
switch (hist->type)
|
||||
{
|
||||
case HIST_TYPE_INTERVAL:
|
||||
(profile_hooks->gen_interval_profiler) (hist, t, 0);
|
||||
gimple_gen_interval_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_POW2:
|
||||
(profile_hooks->gen_pow2_profiler) (hist, t, 0);
|
||||
gimple_gen_pow2_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_SINGLE_VALUE:
|
||||
(profile_hooks->gen_one_value_profiler) (hist, t, 0);
|
||||
gimple_gen_one_value_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_CONST_DELTA:
|
||||
(profile_hooks->gen_const_delta_profiler) (hist, t, 0);
|
||||
gimple_gen_const_delta_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_INDIR_CALL:
|
||||
(profile_hooks->gen_ic_profiler) (hist, t, 0);
|
||||
gimple_gen_ic_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_AVERAGE:
|
||||
(profile_hooks->gen_average_profiler) (hist, t, 0);
|
||||
gimple_gen_average_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
case HIST_TYPE_IOR:
|
||||
(profile_hooks->gen_ior_profiler) (hist, t, 0);
|
||||
gimple_gen_ior_profiler (hist, t, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1170,7 +1167,7 @@ branch_prob (void)
|
|||
#undef BB_TO_GCOV_INDEX
|
||||
|
||||
if (flag_profile_values)
|
||||
find_values_to_profile (&values);
|
||||
gimple_find_values_to_profile (&values);
|
||||
|
||||
if (flag_branch_probabilities)
|
||||
{
|
||||
|
@ -1187,7 +1184,7 @@ branch_prob (void)
|
|||
{
|
||||
unsigned n_instrumented;
|
||||
|
||||
profile_hooks->init_edge_profiler ();
|
||||
gimple_init_edge_profiler ();
|
||||
|
||||
n_instrumented = instrument_edges (el);
|
||||
|
||||
|
@ -1372,11 +1369,3 @@ end_branch_prob (void)
|
|||
}
|
||||
}
|
||||
|
||||
/* Set up hooks to enable tree-based profiling. */
|
||||
|
||||
void
|
||||
tree_register_profile_hooks (void)
|
||||
{
|
||||
gcc_assert (current_ir_type () == IR_GIMPLE);
|
||||
profile_hooks = &tree_profile_hooks;
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ static GTY(()) tree ptr_void;
|
|||
static void* __gcov_indirect_call_callee; // actual callee address
|
||||
*/
|
||||
static void
|
||||
tree_init_ic_make_global_vars (void)
|
||||
init_ic_make_global_vars (void)
|
||||
{
|
||||
tree gcov_type_ptr;
|
||||
|
||||
|
@ -95,8 +95,8 @@ tree_init_ic_make_global_vars (void)
|
|||
varpool_mark_needed_node (varpool_node (ic_gcov_type_ptr_var));
|
||||
}
|
||||
|
||||
static void
|
||||
tree_init_edge_profiler (void)
|
||||
void
|
||||
gimple_init_edge_profiler (void)
|
||||
{
|
||||
tree interval_profiler_fn_type;
|
||||
tree pow2_profiler_fn_type;
|
||||
|
@ -149,7 +149,7 @@ tree_init_edge_profiler (void)
|
|||
= tree_cons (get_identifier ("leaf"), NULL,
|
||||
DECL_ATTRIBUTES (tree_one_value_profiler_fn));
|
||||
|
||||
tree_init_ic_make_global_vars ();
|
||||
init_ic_make_global_vars ();
|
||||
|
||||
/* void (*) (gcov_type *, gcov_type, void *, void *) */
|
||||
ic_profiler_fn_type
|
||||
|
@ -199,8 +199,8 @@ tree_init_edge_profiler (void)
|
|||
execution count, and insert them on E. We rely on
|
||||
gsi_insert_on_edge to preserve the order. */
|
||||
|
||||
static void
|
||||
tree_gen_edge_profiler (int edgeno, edge e)
|
||||
void
|
||||
gimple_gen_edge_profiler (int edgeno, edge e)
|
||||
{
|
||||
tree ref, one;
|
||||
gimple stmt1, stmt2, stmt3;
|
||||
|
@ -239,8 +239,8 @@ prepare_instrumented_value (gimple_stmt_iterator *gsi, histogram_value value)
|
|||
counter. VALUE is the expression whose value is profiled. TAG is the
|
||||
tag of the section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
gimple stmt = value->hvalue.stmt;
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
|
||||
|
@ -265,8 +265,8 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
|
|||
counter. VALUE is the expression whose value is profiled. TAG is the tag
|
||||
of the section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
gimple stmt = value->hvalue.stmt;
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
|
||||
|
@ -285,8 +285,8 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
|
|||
VALUE is the expression whose value is profiled. TAG is the tag of the
|
||||
section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
gimple stmt = value->hvalue.stmt;
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
|
||||
|
@ -308,8 +308,8 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
|
|||
TAG is the tag of the section for counters, BASE is offset of the
|
||||
counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
tree tmp1;
|
||||
gimple stmt1, stmt2, stmt3;
|
||||
|
@ -343,8 +343,8 @@ tree_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base)
|
|||
beginning of every possible called function.
|
||||
*/
|
||||
|
||||
static void
|
||||
tree_gen_ic_func_profiler (void)
|
||||
void
|
||||
gimple_gen_ic_func_profiler (void)
|
||||
{
|
||||
struct cgraph_node * c_node = cgraph_node (current_function_decl);
|
||||
gimple_stmt_iterator gsi;
|
||||
|
@ -354,7 +354,7 @@ tree_gen_ic_func_profiler (void)
|
|||
if (cgraph_only_called_directly_p (c_node))
|
||||
return;
|
||||
|
||||
tree_init_edge_profiler ();
|
||||
gimple_init_edge_profiler ();
|
||||
|
||||
gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR));
|
||||
|
||||
|
@ -387,8 +387,8 @@ tree_gen_ic_func_profiler (void)
|
|||
VALUE is the expression whose value is profiled. TAG is the tag of the
|
||||
section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_const_delta_profiler (histogram_value value ATTRIBUTE_UNUSED,
|
||||
void
|
||||
gimple_gen_const_delta_profiler (histogram_value value ATTRIBUTE_UNUSED,
|
||||
unsigned tag ATTRIBUTE_UNUSED,
|
||||
unsigned base ATTRIBUTE_UNUSED)
|
||||
{
|
||||
|
@ -403,8 +403,8 @@ tree_gen_const_delta_profiler (histogram_value value ATTRIBUTE_UNUSED,
|
|||
counter. VALUE is the expression whose value is profiled. TAG is the
|
||||
tag of the section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
gimple stmt = value->hvalue.stmt;
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
|
||||
|
@ -424,8 +424,8 @@ tree_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
|
|||
counter. VALUE is the expression whose value is profiled. TAG is the
|
||||
tag of the section for counters, BASE is offset of the counter position. */
|
||||
|
||||
static void
|
||||
tree_gen_ior_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
void
|
||||
gimple_gen_ior_profiler (histogram_value value, unsigned tag, unsigned base)
|
||||
{
|
||||
gimple stmt = value->hvalue.stmt;
|
||||
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
|
||||
|
@ -454,9 +454,6 @@ tree_profiling (void)
|
|||
if (cgraph_state == CGRAPH_STATE_FINISHED)
|
||||
return 0;
|
||||
|
||||
tree_register_profile_hooks ();
|
||||
gimple_register_value_prof_hooks ();
|
||||
|
||||
for (node = cgraph_nodes; node; node = node->next)
|
||||
{
|
||||
if (!node->analyzed
|
||||
|
@ -479,12 +476,12 @@ tree_profiling (void)
|
|||
|
||||
if (! flag_branch_probabilities
|
||||
&& flag_profile_values)
|
||||
tree_gen_ic_func_profiler ();
|
||||
gimple_gen_ic_func_profiler ();
|
||||
|
||||
if (flag_branch_probabilities
|
||||
&& flag_profile_values
|
||||
&& flag_value_profile_transformations)
|
||||
value_profile_transformations ();
|
||||
gimple_value_profile_transformations ();
|
||||
|
||||
/* The above could hose dominator info. Currently there is
|
||||
none coming in, this is a safety valve. It should be
|
||||
|
@ -583,18 +580,4 @@ struct simple_ipa_opt_pass pass_ipa_tree_profile =
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
struct profile_hooks tree_profile_hooks =
|
||||
{
|
||||
tree_init_edge_profiler, /* init_edge_profiler */
|
||||
tree_gen_edge_profiler, /* gen_edge_profiler */
|
||||
tree_gen_interval_profiler, /* gen_interval_profiler */
|
||||
tree_gen_pow2_profiler, /* gen_pow2_profiler */
|
||||
tree_gen_one_value_profiler, /* gen_one_value_profiler */
|
||||
tree_gen_const_delta_profiler, /* gen_const_delta_profiler */
|
||||
tree_gen_ic_profiler, /* gen_ic_profiler */
|
||||
tree_gen_average_profiler, /* gen_average_profiler */
|
||||
tree_gen_ior_profiler /* gen_ior_profiler */
|
||||
};
|
||||
|
||||
#include "gt-tree-profile.h"
|
||||
|
|
|
@ -47,8 +47,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "tree-pass.h"
|
||||
#include "pointer-set.h"
|
||||
|
||||
static struct value_prof_hooks *value_prof_hooks;
|
||||
|
||||
/* In this file value profile based optimizations are placed. Currently the
|
||||
following optimizations are implemented (for more detailed descriptions
|
||||
see comments at value_profile_transformations):
|
||||
|
@ -488,7 +486,7 @@ check_counter (gimple stmt, const char * name,
|
|||
|
||||
/* GIMPLE based transformations. */
|
||||
|
||||
static bool
|
||||
bool
|
||||
gimple_value_profile_transformations (void)
|
||||
{
|
||||
basic_block bb;
|
||||
|
@ -1545,14 +1543,6 @@ stringop_block_profile (gimple stmt, unsigned int *expected_align,
|
|||
}
|
||||
}
|
||||
|
||||
struct value_prof_hooks {
|
||||
/* Find list of values for which we want to measure histograms. */
|
||||
void (*find_values_to_profile) (histogram_values *);
|
||||
|
||||
/* Identify and exploit properties of values that are hard to analyze
|
||||
statically. See value-prof.c for more detail. */
|
||||
bool (*value_profile_transformations) (void);
|
||||
};
|
||||
|
||||
/* Find values inside STMT for that we want to measure histograms for
|
||||
division/modulo optimization. */
|
||||
|
@ -1686,7 +1676,7 @@ gimple_values_to_profile (gimple stmt, histogram_values *values)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
gimple_find_values_to_profile (histogram_values *values)
|
||||
{
|
||||
basic_block bb;
|
||||
|
@ -1743,28 +1733,3 @@ gimple_find_values_to_profile (histogram_values *values)
|
|||
}
|
||||
}
|
||||
|
||||
static struct value_prof_hooks gimple_value_prof_hooks = {
|
||||
gimple_find_values_to_profile,
|
||||
gimple_value_profile_transformations
|
||||
};
|
||||
|
||||
void
|
||||
gimple_register_value_prof_hooks (void)
|
||||
{
|
||||
gcc_assert (current_ir_type () == IR_GIMPLE);
|
||||
value_prof_hooks = &gimple_value_prof_hooks;
|
||||
}
|
||||
|
||||
/* IR-independent entry points. */
|
||||
void
|
||||
find_values_to_profile (histogram_values *values)
|
||||
{
|
||||
(value_prof_hooks->find_values_to_profile) (values);
|
||||
}
|
||||
|
||||
bool
|
||||
value_profile_transformations (void)
|
||||
{
|
||||
return (value_prof_hooks->value_profile_transformations) ();
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ enum hist_type
|
|||
#define HIST_TYPE_FOR_COUNTER(COUNTER) \
|
||||
((enum hist_type) ((COUNTER) - GCOV_FIRST_VALUE_COUNTER))
|
||||
|
||||
|
||||
/* The value to measure. */
|
||||
struct histogram_value_t
|
||||
{
|
||||
|
@ -70,44 +71,8 @@ DEF_VEC_ALLOC_P(histogram_value,heap);
|
|||
|
||||
typedef VEC(histogram_value,heap) *histogram_values;
|
||||
|
||||
/* Hooks registration. */
|
||||
extern void gimple_register_value_prof_hooks (void);
|
||||
|
||||
/* IR-independent entry points. */
|
||||
extern void find_values_to_profile (histogram_values *);
|
||||
extern bool value_profile_transformations (void);
|
||||
|
||||
/* External declarations for edge-based profiling. */
|
||||
struct profile_hooks {
|
||||
|
||||
/* Insert code to initialize edge profiler. */
|
||||
void (*init_edge_profiler) (void);
|
||||
|
||||
/* Insert code to increment an edge count. */
|
||||
void (*gen_edge_profiler) (int, edge);
|
||||
|
||||
/* Insert code to increment the interval histogram counter. */
|
||||
void (*gen_interval_profiler) (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* Insert code to increment the power of two histogram counter. */
|
||||
void (*gen_pow2_profiler) (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* Insert code to find the most common value. */
|
||||
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) (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* Insert code to find the most common indirect call */
|
||||
void (*gen_ic_profiler) (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* Insert code to find the average value of an expression. */
|
||||
void (*gen_average_profiler) (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* Insert code to ior value of an expression. */
|
||||
void (*gen_ior_profiler) (histogram_value, unsigned, unsigned);
|
||||
};
|
||||
extern void gimple_find_values_to_profile (histogram_values *);
|
||||
extern bool gimple_value_profile_transformations (void);
|
||||
|
||||
histogram_value gimple_histogram_value (struct function *, gimple);
|
||||
histogram_value gimple_histogram_value_of_type (struct function *, gimple,
|
||||
|
@ -123,14 +88,23 @@ void verify_histograms (void);
|
|||
void free_histograms (void);
|
||||
void stringop_block_profile (gimple, unsigned int *, HOST_WIDE_INT *);
|
||||
|
||||
/* In tree-profile.c. */
|
||||
extern void gimple_init_edge_profiler (void);
|
||||
extern void gimple_gen_edge_profiler (int, edge);
|
||||
extern void gimple_gen_interval_profiler (histogram_value, unsigned, unsigned);
|
||||
extern void gimple_gen_pow2_profiler (histogram_value, unsigned, unsigned);
|
||||
extern void gimple_gen_one_value_profiler (histogram_value, unsigned, unsigned);
|
||||
extern void gimple_gen_ic_profiler (histogram_value, unsigned, unsigned);
|
||||
extern void gimple_gen_ic_func_profiler (void);
|
||||
extern void gimple_gen_const_delta_profiler (histogram_value,
|
||||
unsigned, unsigned);
|
||||
extern void gimple_gen_average_profiler (histogram_value, unsigned, unsigned);
|
||||
extern void gimple_gen_ior_profiler (histogram_value, unsigned, unsigned);
|
||||
|
||||
/* In profile.c. */
|
||||
extern void init_branch_prob (void);
|
||||
extern void branch_prob (void);
|
||||
extern void end_branch_prob (void);
|
||||
extern void tree_register_profile_hooks (void);
|
||||
|
||||
/* In tree-profile.c. */
|
||||
extern struct profile_hooks tree_profile_hooks;
|
||||
|
||||
#endif /* GCC_VALUE_PROF_H */
|
||||
|
||||
|
|
Loading…
Reference in New Issue