diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-11-17 19:52:59 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-11-17 18:52:59 +0000 |
commit | a6b1490d35d7acb3dc5fe785fce116a674092c20 (patch) | |
tree | 271a33802b79d2437828ed71c783c755e8ff4130 /gcc/cgraph.c | |
parent | 7525bb7d7fe6d44c4634401e7468c408cee94d81 (diff) | |
download | gcc-a6b1490d35d7acb3dc5fe785fce116a674092c20.zip gcc-a6b1490d35d7acb3dc5fe785fce116a674092c20.tar.gz gcc-a6b1490d35d7acb3dc5fe785fce116a674092c20.tar.bz2 |
cgraph.c (symbol_table::create_edge): Use opt_for_fn.
* cgraph.c (symbol_table::create_edge): Use opt_for_fn.
(cgraph_node::cannot_return_p): Likewise.
(cgraph_edge::cannot_lead_to_return_p): Likewise.
(cgraph_edge::maybe_hot_p): Likewise.
From-SVN: r217667
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index ad181b0..cc04744 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -859,7 +859,8 @@ symbol_table::create_edge (cgraph_node *caller, cgraph_node *callee, edge->indirect_inlining_edge = 0; edge->speculative = false; edge->indirect_unknown_callee = indir_unknown_callee; - if (flag_devirtualize && call_stmt && DECL_STRUCT_FUNCTION (caller->decl)) + if (opt_for_fn (edge->caller->decl, flag_devirtualize) + && call_stmt && DECL_STRUCT_FUNCTION (caller->decl)) edge->in_polymorphic_cdtor = decl_maybe_in_construction_p (NULL, NULL, call_stmt, caller->decl); @@ -2374,7 +2375,7 @@ bool cgraph_node::cannot_return_p (void) { int flags = flags_from_decl_or_type (decl); - if (!flag_exceptions) + if (!opt_for_fn (decl, flag_exceptions)) return (flags & ECF_NORETURN) != 0; else return ((flags & (ECF_NORETURN | ECF_NOTHROW)) @@ -2394,7 +2395,7 @@ cgraph_edge::cannot_lead_to_return_p (void) if (indirect_unknown_callee) { int flags = indirect_info->ecf_flags; - if (!flag_exceptions) + if (!opt_for_fn (caller->decl, flag_exceptions)) return (flags & ECF_NORETURN) != 0; else return ((flags & (ECF_NORETURN | ECF_NOTHROW)) @@ -2409,7 +2410,9 @@ cgraph_edge::cannot_lead_to_return_p (void) bool cgraph_edge::maybe_hot_p (void) { - if (profile_info && flag_branch_probabilities + /* TODO: Export profile_status from cfun->cfg to cgraph_node. */ + if (profile_info + && opt_for_fn (caller->decl, flag_branch_probabilities) && !maybe_hot_count_p (NULL, count)) return false; if (caller->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED @@ -2420,17 +2423,18 @@ cgraph_edge::maybe_hot_p (void) && (callee && callee->frequency <= NODE_FREQUENCY_EXECUTED_ONCE)) return false; - if (optimize_size) return false; + if (opt_for_fn (caller->decl, optimize_size)) + return false; if (caller->frequency == NODE_FREQUENCY_HOT) return true; if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE && frequency < CGRAPH_FREQ_BASE * 3 / 2) return false; - if (flag_guess_branch_prob) + if (opt_for_fn (caller->decl, flag_guess_branch_prob)) { if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0 || frequency <= (CGRAPH_FREQ_BASE - / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))) + / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))) return false; } return true; |