aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2008-08-29 10:40:01 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2008-08-29 08:40:01 +0000
commit7299cb994088a68a4fec5e479a03fc8a71e50646 (patch)
tree42efa153d20247d1235c077d9e83fe93cb6e2be6 /gcc/tree-inline.c
parenta4b930608f389022fdcb256796c187719307b410 (diff)
downloadgcc-7299cb994088a68a4fec5e479a03fc8a71e50646.zip
gcc-7299cb994088a68a4fec5e479a03fc8a71e50646.tar.gz
gcc-7299cb994088a68a4fec5e479a03fc8a71e50646.tar.bz2
cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.
* cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic. * tree-pass.h (pass_strip_predict_hints): Declare. * predict.c (strip_builtin_expect): Rename to ... (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT. (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT. (tree_estimate_probability): Do not strip builtin_expect. (pass_strip_predict_hints): New pass. * tree-inline.c (expand_call_inline): When inlining cold function, predict it as unlikely. * passes.c (init_optimization_passes): Add pass_strip_predict_hints. From-SVN: r139755
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 7ef58c3..4fb28fe 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -3209,6 +3209,13 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
gcc_assert (!id->src_cfun->after_inlining);
id->entry_bb = bb;
+ if (lookup_attribute ("cold", DECL_ATTRIBUTES (fn)))
+ {
+ gimple_stmt_iterator si = gsi_last_bb (bb);
+ gsi_insert_after (&si, gimple_build_predict (PRED_COLD_FUNCTION,
+ NOT_TAKEN),
+ GSI_NEW_STMT);
+ }
initialize_inlined_parameters (id, stmt, fn, bb);
if (DECL_INITIAL (fn))