aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-switch-conversion.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-11-09 14:26:04 +0100
committerMartin Liska <mliska@suse.cz>2020-11-16 10:54:29 +0100
commit5e303cdee1ff01e4b302ef2f913c0bdd84ab967e (patch)
tree3ecf62b09717cbf9318e2a62da0d74ca85cca855 /gcc/tree-switch-conversion.c
parentd12603b746986554981f5ee220926a36a6cb6baf (diff)
downloadgcc-5e303cdee1ff01e4b302ef2f913c0bdd84ab967e.zip
gcc-5e303cdee1ff01e4b302ef2f913c0bdd84ab967e.tar.gz
gcc-5e303cdee1ff01e4b302ef2f913c0bdd84ab967e.tar.bz2
Prefer bit-test over the jump table.
gcc/ChangeLog: PR tree-optimization/97736 * tree-switch-conversion.c (switch_decision_tree::analyze_switch_statement): Prefer bit tests. gcc/testsuite/ChangeLog: PR tree-optimization/97736 * gcc.dg/tree-ssa/switch-1.c: Prefer bit tests. * g++.dg/tree-ssa/pr97736.C: New test.
Diffstat (limited to 'gcc/tree-switch-conversion.c')
-rw-r--r--gcc/tree-switch-conversion.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index 426462e..a87a2a3 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -1743,10 +1743,10 @@ switch_decision_tree::analyze_switch_statement ()
reset_out_edges_aux (m_switch);
- /* Find jump table clusters. */
- vec<cluster *> output = jump_table_cluster::find_jump_tables (clusters);
+ /* Find bit-test clusters. */
+ vec<cluster *> output = bit_test_cluster::find_bit_tests (clusters);
- /* Find bit test clusters. */
+ /* Find jump table clusters. */
vec<cluster *> output2;
auto_vec<cluster *> tmp;
output2.create (1);
@@ -1759,7 +1759,7 @@ switch_decision_tree::analyze_switch_statement ()
{
if (!tmp.is_empty ())
{
- vec<cluster *> n = bit_test_cluster::find_bit_tests (tmp);
+ vec<cluster *> n = jump_table_cluster::find_jump_tables (tmp);
output2.safe_splice (n);
n.release ();
tmp.truncate (0);
@@ -1773,7 +1773,7 @@ switch_decision_tree::analyze_switch_statement ()
/* We still can have a temporary vector to test. */
if (!tmp.is_empty ())
{
- vec<cluster *> n = bit_test_cluster::find_bit_tests (tmp);
+ vec<cluster *> n = jump_table_cluster::find_jump_tables (tmp);
output2.safe_splice (n);
n.release ();
}