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
2 changed files with 25 additions and 1 deletions
|
@ -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>
|
||||
|
||||
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. */
|
||||
|
||||
static enum br_predictor
|
||||
|
@ -2638,7 +2653,9 @@ tree_bb_level_predictions (void)
|
|||
|
||||
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,
|
||||
NOT_TAKEN);
|
||||
decl = gimple_call_fndecl (stmt);
|
||||
|
|
Loading…
Add table
Reference in a new issue