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 <mli...@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 <mli...@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