Commit e25a366f by Andrew Pinski Committed by Andrew Pinski

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
parent 5cb96b6a
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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment