diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-04-22 12:57:04 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-04-22 10:57:04 +0000 |
commit | 9885da8e1b3b22d00cd59c167ede990d97a4322b (patch) | |
tree | 3d4bc0e193a087dc3f70c67b813b2d73c8772b43 /gcc/gimplify.c | |
parent | ebccb65d5a5a9dbeffbba9824cd2c4fbfdd684a6 (diff) | |
download | gcc-9885da8e1b3b22d00cd59c167ede990d97a4322b.zip gcc-9885da8e1b3b22d00cd59c167ede990d97a4322b.tar.gz gcc-9885da8e1b3b22d00cd59c167ede990d97a4322b.tar.bz2 |
Makefile.in (LIBGCOV): Add _gcov_interval_profiler, _gcov_pow2_profiler and _gcov_one_value_profiler.
* Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
_gcov_pow2_profiler and _gcov_one_value_profiler.
(tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
(GTFILES): Add $(srcdir)/tree-profile.c.
* gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
__gcov_one_value_profiler): Declare.
* gimplify.c (force_gimple_operand): Check whether the statements
should be produced in ssa form.
(force_gimple_operand_bsi): New function.
* libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
__gcov_one_value_profiler): New functions.
* rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
the profiled value is a power of two or not.
* tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
* tree-flow.h (in_ssa_p): Declare.
(force_gimple_operand_bsi): Declare.
* tree-into-ssa.c (in_ssa_p): New variable.
(rewrite_into_ssa): Set in_ssa_p.
* tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
* tree-profile.c: Include ggc.h and gt-tree-profile.h.
(gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
tree_one_value_profiler_fn): New variables.
(tree_init_edge_profiler): Initialize the profiler function decls.
(tree_gen_edge_profiler): Use global gcov_type_node.
(prepare_instrumented_value): New function.
(tree_gen_interval_profiler, tree_gen_interval_profiler,
tree_gen_one_value_profiler): Call the library functions instead of
creating instrumentation code.
* tree.c (build_fn_decl): New function.
* tree.h (build_fn_decl): Declare.
* value-prof.c (rtl_divmod_values_to_profile,
rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
tree_mod_pow2_value_transform, tree_find_values_to_profile):
Do not handle may_be_other and precise values of exponents at pow2
profiler.
(tree_mod_subtract_transform): Reflect that value field of
histogram has changed meaning.
(tree_divmod_values_to_profile): Record the values correctly.
(tree_values_to_profile): Update comment.
* value-prof.h (struct histogram_value_t): Remove pow2 data.
From-SVN: r98555
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 5eb1d49..8a510b2 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -4662,7 +4662,7 @@ force_gimple_operand (tree expr, tree *stmts, bool simple, tree var) gimple_test_f = simple ? is_gimple_val : is_gimple_reg_rhs; push_gimplify_context (); - gimplify_ctxp->into_ssa = true; + gimplify_ctxp->into_ssa = in_ssa_p; if (var) expr = build (MODIFY_EXPR, TREE_TYPE (var), var, expr); @@ -4671,12 +4671,31 @@ force_gimple_operand (tree expr, tree *stmts, bool simple, tree var) gimple_test_f, fb_rvalue); gcc_assert (ret != GS_ERROR); - for (t = gimplify_ctxp->temps; t ; t = TREE_CHAIN (t)) - add_referenced_tmp_var (t); + if (referenced_vars) + { + for (t = gimplify_ctxp->temps; t ; t = TREE_CHAIN (t)) + add_referenced_tmp_var (t); + } pop_gimplify_context (NULL); return expr; } +/* Invokes force_gimple_operand for EXPR with parameters SIMPLE_P and VAR. If + some statements are produced, emits them before BSI. */ + +tree +force_gimple_operand_bsi (block_stmt_iterator *bsi, tree expr, + bool simple_p, tree var) +{ + tree stmts; + + expr = force_gimple_operand (expr, &stmts, simple_p, var); + if (stmts) + bsi_insert_before (bsi, stmts, BSI_SAME_STMT); + + return expr; +} + #include "gt-gimplify.h" |