mirror of git://gcc.gnu.org/git/gcc.git
re PR middle-end/65950 (exit in main is causing the path to it to become unlikely.)
2016-10-18 Andrew Pinski <apinski@cavium.com>
PR tree-opt/65950
* predict.c (is_exit_with_zero_arg): New function.
(tree_bb_level_predictions): Don't consider paths leading to exit(0)
as nottaken.
From-SVN: r241309
This commit is contained in:
parent
5cb96b6a87
commit
e25a366f6f
|
|
@ -1,3 +1,10 @@
|
||||||
|
2016-10-18 Andrew Pinski <apinski@cavium.com>
|
||||||
|
|
||||||
|
PR tree-opt/65950
|
||||||
|
* predict.c (is_exit_with_zero_arg): New function.
|
||||||
|
(tree_bb_level_predictions): Don't consider paths leading to exit(0)
|
||||||
|
as nottaken.
|
||||||
|
|
||||||
2016-10-18 Uros Bizjak <ubizjak@gmail.com>
|
2016-10-18 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
PR target/77991
|
PR target/77991
|
||||||
|
|
|
||||||
|
|
@ -2512,6 +2512,21 @@ tree_predict_by_opcode (basic_block bb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns TRUE if the STMT is exit(0) like statement. */
|
||||||
|
|
||||||
|
static bool
|
||||||
|
is_exit_with_zero_arg (const gimple *stmt)
|
||||||
|
{
|
||||||
|
/* This is not exit, _exit or _Exit. */
|
||||||
|
if (!gimple_call_builtin_p (stmt, BUILT_IN_EXIT)
|
||||||
|
&& !gimple_call_builtin_p (stmt, BUILT_IN__EXIT)
|
||||||
|
&& !gimple_call_builtin_p (stmt, BUILT_IN__EXIT2))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Argument is an interger zero. */
|
||||||
|
return integer_zerop (gimple_call_arg (stmt, 0));
|
||||||
|
}
|
||||||
|
|
||||||
/* Try to guess whether the value of return means error code. */
|
/* Try to guess whether the value of return means error code. */
|
||||||
|
|
||||||
static enum br_predictor
|
static enum br_predictor
|
||||||
|
|
@ -2638,7 +2653,9 @@ tree_bb_level_predictions (void)
|
||||||
|
|
||||||
if (is_gimple_call (stmt))
|
if (is_gimple_call (stmt))
|
||||||
{
|
{
|
||||||
if (gimple_call_noreturn_p (stmt) && has_return_edges)
|
if (gimple_call_noreturn_p (stmt)
|
||||||
|
&& has_return_edges
|
||||||
|
&& !is_exit_with_zero_arg (stmt))
|
||||||
predict_paths_leading_to (bb, PRED_NORETURN,
|
predict_paths_leading_to (bb, PRED_NORETURN,
|
||||||
NOT_TAKEN);
|
NOT_TAKEN);
|
||||||
decl = gimple_call_fndecl (stmt);
|
decl = gimple_call_fndecl (stmt);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue