[Bug middle-end/59521] __builtin_expect not effective in switch
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 3 07:53:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59521
--- Comment #20 from Martin Liška <marxin at gcc dot gnu.org> ---
Author: marxin
Date: Mon Sep 3 07:51:56 2018
New Revision: 264050
URL: https://gcc.gnu.org/viewcvs?rev=264050&root=gcc&view=rev
Log:
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.
Added:
trunk/gcc/testsuite/c-c++-common/pr59521-1.c
trunk/gcc/testsuite/c-c++-common/pr59521-2.c
trunk/gcc/testsuite/gcc.dg/tree-prof/pr59521-3.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/predict.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-cfg.c
trunk/gcc/tree-cfg.h
trunk/gcc/tree-switch-conversion.c
More information about the Gcc-bugs
mailing list