Make __builtin_expect effective in switch statements (PR middle-end/PR59521).
commit44b41fe75b9e1236282779a11f48c40bb1a8fa2d
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Sep 2018 07:51:56 +0000 (3 07:51 +0000)
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Sep 2018 07:51:56 +0000 (3 07:51 +0000)
tree42056a80e427e22c26a9f90994acf4d459f9b414
parente7d8b5c2ddf5df1bbb821f3a534f433fdba05995
Make __builtin_expect effective in switch statements (PR middle-end/PR59521).

2018-09-03  Martin Liska  <mliska@suse.cz>

  PR middle-end/59521
* predict.c (set_even_probabilities): Add likely_edges
        argument and handle cases where we have precisely one
        likely edge.
(combine_predictions_for_bb): Catch also likely_edges.
(tree_predict_by_opcode): Handle gswitch statements.
* tree-cfg.h (find_case_label_for_value): New declaration.
(find_taken_edge_switch_expr): Likewise.
* tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
        Find pivot in decision tree based on probabily, not by number of
        nodes.
2018-09-03  Martin Liska  <mliska@suse.cz>

  PR middle-end/59521
* c-c++-common/pr59521-1.c: New test.
* c-c++-common/pr59521-2.c: New test.
* gcc.dg/tree-prof/pr59521-3.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264050 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/predict.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/pr59521-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/pr59521-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-prof/pr59521-3.c [new file with mode: 0644]
gcc/tree-cfg.c
gcc/tree-cfg.h
gcc/tree-switch-conversion.c