Hello.

There's another version of the patch that should be based on what
I discussed with Richi and Jakub:

- the first patch introduces a new option -fbit-tests that analogue to 
-fjump-tables
  and will control the new if-to-switch conversion pass

- the second patch adds the pass
- I share code with tree-ssa-reassoc.c (range_entry and init_range_entry)
- a local discovery phase is run first
- later than these local BBs are chained into a candidate list for the 
conversion

I'm also sending transformed chains for 'make all-host' (620 transformations).
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Thoughts?
Thanks,
Martin
>From 69b043dfe5a741ca5b0d9536a0b59b1d5066d47f Mon Sep 17 00:00:00 2001
From: Martin Liska <mli...@suse.cz>
Date: Fri, 28 Aug 2020 10:26:13 +0200
Subject: [PATCH 2/2] Add if-chain to switch conversion pass.

gcc/ChangeLog:

	PR tree-optimization/14799
	PR ipa/88702
	* Makefile.in: Add gimple-if-to-switch.o.
	* dbgcnt.def (DEBUG_COUNTER): Add new debug counter.
	* passes.def: Include new pass_if_to_switch pass.
	* timevar.def (TV_TREE_IF_TO_SWITCH): New timevar.
	* tree-pass.h (make_pass_if_to_switch): New.
	* tree-ssa-reassoc.c (struct operand_entry): Move to the header.
	(dump_range_entry): Move to header file.
	(debug_range_entry): Likewise.
	(no_side_effect_bb): Make it global.
	* tree-switch-conversion.h (simple_cluster::simple_cluster):
	Add inline for couple of functions in order to prevent error
	about multiple defined symbols.
	* gimple-if-to-switch.cc: New file.
	* tree-ssa-reassoc.h: New file.

gcc/testsuite/ChangeLog:

	PR tree-optimization/14799
	PR ipa/88702
	* gcc.dg/tree-ssa/pr96480.c: Disable if-to-switch conversion.
	* gcc.dg/tree-ssa/reassoc-32.c: Likewise.
	* g++.dg/tree-ssa/if-to-switch-1.C: New test.
	* gcc.dg/tree-ssa/if-to-switch-1.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-2.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-3.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-4.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-5.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-6.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-7.c: New test.
	* gcc.dg/tree-ssa/if-to-switch-8.c: New test.
---
 gcc/Makefile.in                               |   1 +
 gcc/dbgcnt.def                                |   1 +
 gcc/gimple-if-to-switch.cc                    | 565 ++++++++++++++++++
 gcc/passes.def                                |   1 +
 .../g++.dg/tree-ssa/if-to-switch-1.C          |  25 +
 .../gcc.dg/tree-ssa/if-to-switch-1.c          |  35 ++
 .../gcc.dg/tree-ssa/if-to-switch-2.c          |  11 +
 .../gcc.dg/tree-ssa/if-to-switch-3.c          |  11 +
 .../gcc.dg/tree-ssa/if-to-switch-4.c          |  36 ++
 .../gcc.dg/tree-ssa/if-to-switch-5.c          |  12 +
 .../gcc.dg/tree-ssa/if-to-switch-6.c          |  42 ++
 .../gcc.dg/tree-ssa/if-to-switch-7.c          |  25 +
 .../gcc.dg/tree-ssa/if-to-switch-8.c          |  27 +
 gcc/testsuite/gcc.dg/tree-ssa/pr96480.c       |   2 +-
 gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c    |   2 +-
 gcc/timevar.def                               |   1 +
 gcc/tree-pass.h                               |   1 +
 gcc/tree-ssa-reassoc.c                        |  27 +-
 gcc/tree-ssa-reassoc.h                        |  48 ++
 gcc/tree-switch-conversion.h                  |  24 +-
 20 files changed, 865 insertions(+), 32 deletions(-)
 create mode 100644 gcc/gimple-if-to-switch.cc
 create mode 100644 gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-5.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-6.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-7.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-8.c
 create mode 100644 gcc/tree-ssa-reassoc.h

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 5a8fb0d7612..c7ecda54df2 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1361,6 +1361,7 @@ OBJS = \
 	gimple-array-bounds.o \
 	gimple-builder.o \
 	gimple-expr.o \
+	gimple-if-to-switch.o \
 	gimple-iterator.o \
 	gimple-fold.o \
 	gimple-laddress.o \
diff --git a/gcc/dbgcnt.def b/gcc/dbgcnt.def
index 07946a85ecc..c8d41065a94 100644
--- a/gcc/dbgcnt.def
+++ b/gcc/dbgcnt.def
@@ -170,6 +170,7 @@ DEBUG_COUNTER (if_after_combine)
 DEBUG_COUNTER (if_after_reload)
 DEBUG_COUNTER (if_conversion)
 DEBUG_COUNTER (if_conversion_tree)
+DEBUG_COUNTER (if_to_switch)
 DEBUG_COUNTER (ipa_cp_bits)
 DEBUG_COUNTER (ipa_mod_ref)
 DEBUG_COUNTER (ipa_sra_params)
diff --git a/gcc/gimple-if-to-switch.cc b/gcc/gimple-if-to-switch.cc
new file mode 100644
index 00000000000..25ef45175a7
--- /dev/null
+++ b/gcc/gimple-if-to-switch.cc
@@ -0,0 +1,565 @@
+/* If-elseif-else to switch conversion pass
+   Copyright (C) 2020 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Algorithm of the pass runs in the following steps:
+   a) We walk basic blocks in DOMINATOR order so that we first reach
+      a first condition of a future switch.
+   b) We follow false edges of a if-else-chain and we record chain
+      of GIMPLE conditions.  These blocks are only used for comparison
+      of a common SSA_NAME and we do not allow any side effect.
+   c) We remove all basic blocks (except first) of such chain and
+      GIMPLE switch replaces the condition in the first basic block.
+   d) We move all GIMPLE statements in the removed blocks into the
+      first one.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "backend.h"
+#include "rtl.h"
+#include "tree.h"
+#include "gimple.h"
+#include "tree-pass.h"
+#include "ssa.h"
+#include "gimple-pretty-print.h"
+#include "fold-const.h"
+#include "gimple-iterator.h"
+#include "tree-cfg.h"
+#include "tree-dfa.h"
+#include "tree-cfgcleanup.h"
+#include "alias.h"
+#include "tree-ssa-loop.h"
+#include "diagnostic.h"
+#include "cfghooks.h"
+#include "tree-into-ssa.h"
+#include "cfganal.h"
+#include "dbgcnt.h"
+#include "target.h"
+#include "alloc-pool.h"
+#include "tree-switch-conversion.h"
+#include "tree-ssa-reassoc.h"
+
+using namespace tree_switch_conversion;
+
+struct condition_info
+{
+  typedef vec<std::pair<gphi *, tree>> mapping_vec;
+
+  condition_info (gcond *cond): m_cond (cond), m_bb (gimple_bb (cond)),
+    m_forwarder_bb (NULL), m_ranges (), m_true_edge (NULL), m_false_edge (NULL),
+    m_true_edge_phi_mapping (), m_false_edge_phi_mapping ()
+  {
+    m_ranges.create (0);
+  }
+
+  /* Recond PHI mapping for an original edge E and save these into
+     vector VEC.  */
+  void record_phi_mapping (edge e, mapping_vec *vec);
+
+  gcond *m_cond;
+  basic_block m_bb;
+  basic_block m_forwarder_bb;
+  vec<range_entry> m_ranges;
+  edge m_true_edge;
+  edge m_false_edge;
+  mapping_vec m_true_edge_phi_mapping;
+  mapping_vec m_false_edge_phi_mapping;
+};
+
+/* Recond PHI mapping for an original edge E and save these into vector VEC.  */
+
+void
+condition_info::record_phi_mapping (edge e, mapping_vec *vec)
+{
+  for (gphi_iterator gsi = gsi_start_phis (e->dest); !gsi_end_p (gsi);
+       gsi_next (&gsi))
+    {
+      gphi *phi = gsi.phi ();
+      if (!virtual_operand_p (gimple_phi_result (phi)))
+	{
+	  tree arg = PHI_ARG_DEF_FROM_EDGE (phi, e);
+	  vec->safe_push (std::make_pair (phi, arg));
+	}
+    }
+}
+
+/* Master structure for one if to switch conversion candidate.  */
+
+struct if_chain
+{
+  /* Default constructor.  */
+  if_chain (): m_entries ()
+  {
+    m_entries.create (2);
+  }
+
+  /* Default destructor.  */
+  ~if_chain ()
+  {
+    m_entries.release ();
+  }
+
+  /* Verify that all case ranges do not overlap.  */
+  bool check_non_overlapping_cases ();
+
+  /* Return true when the switch can be expanded with a jump table or
+     a bit test (at least partially).  */
+  bool is_beneficial ();
+
+  /* If chain entries.  */
+  vec<condition_info *> m_entries;
+};
+
+/* Compare two case ranges by minimum value.  */
+
+static int
+range_cmp (const void *a, const void *b)
+{
+  const range_entry *re1 = *(const range_entry * const *) a;
+  const range_entry *re2 = *(const range_entry * const *) b;
+
+  return tree_int_cst_compare (re1->low, re2->low);
+}
+
+/* Verify that all case ranges do not overlap.  */
+
+bool
+if_chain::check_non_overlapping_cases ()
+{
+  auto_vec<range_entry *> all_ranges;
+  for (unsigned i = 0; i < m_entries.length (); i++)
+    for (unsigned j = 0; j < m_entries[i]->m_ranges.length (); j++)
+      all_ranges.safe_push (&m_entries[i]->m_ranges[j]);
+
+  all_ranges.qsort (range_cmp);
+
+  for (unsigned i = 0; i < all_ranges.length () - 1; i++)
+    {
+      range_entry *left = all_ranges[i];
+      range_entry *right = all_ranges[i + 1];
+      if (tree_int_cst_le (left->low, right->low)
+	  && tree_int_cst_le (right->low, left->high))
+	return false;
+    }
+
+  return true;
+}
+
+/* Compare clusters by minimum value.  */
+
+static int
+cluster_cmp (const void *a, const void *b)
+{
+  simple_cluster *sc1 = *(simple_cluster * const *) a;
+  simple_cluster *sc2 = *(simple_cluster * const *) b;
+
+  return tree_int_cst_compare (sc1->get_low (), sc2->get_high ());
+}
+
+/* Dump constructed CLUSTERS with prefix MESSAGE.  */
+
+static void
+dump_clusters (vec<cluster *> *clusters, const char *message)
+{
+  if (dump_file)
+    {
+      fprintf (dump_file, ";; %s: ", message);
+      for (unsigned i = 0; i < clusters->length (); i++)
+	(*clusters)[i]->dump (dump_file, dump_flags & TDF_DETAILS);
+      fprintf (dump_file, "\n");
+    }
+}
+
+/* Return true when the switch can be expanded with a jump table or
+   a bit test (at least partially).  */
+
+bool
+if_chain::is_beneficial ()
+{
+  profile_probability prob = profile_probability::uninitialized ();
+
+  auto_vec<cluster *> clusters;
+  clusters.create (m_entries.length ());
+
+  for (unsigned i = 0; i < m_entries.length (); i++)
+    {
+      condition_info *info = m_entries[i];
+      for (unsigned j = 0; j < info->m_ranges.length (); j++)
+	{
+	  range_entry *range = &info->m_ranges[j];
+	  basic_block bb = info->m_true_edge->dest;
+	  bool has_forwarder = !info->m_true_edge_phi_mapping.is_empty ();
+	  clusters.safe_push (new simple_cluster (range->low, range->high,
+						  NULL_TREE, bb, prob,
+						  has_forwarder));
+	}
+    }
+
+  /* Sort clusters and merge them.  */
+  auto_vec<cluster *> filtered_clusters;
+  filtered_clusters.create (16);
+  clusters.qsort (cluster_cmp);
+  simple_cluster *left = static_cast<simple_cluster *> (clusters[0]);
+  filtered_clusters.safe_push (left);
+
+  for (unsigned i = 1; i < clusters.length (); i++)
+    {
+      simple_cluster *right = static_cast<simple_cluster *> (clusters[i]);
+      tree type = TREE_TYPE (left->get_low ());
+      tree pos_one = build_int_cst (type, 1);
+      if (!left->m_has_forward_bb
+	  && !right->m_has_forward_bb
+	  && left->m_case_bb == right->m_case_bb)
+	{
+	  tree next = int_const_binop (PLUS_EXPR, left->get_high (), pos_one);
+	  if (tree_int_cst_equal (next, right->get_low ()))
+	    {
+	      left->set_high (right->get_high ());
+	      continue;
+	    }
+	}
+
+      left = static_cast<simple_cluster *> (clusters[i]);
+      filtered_clusters.safe_push (left);
+    }
+
+  dump_clusters (&filtered_clusters, "Canonical GIMPLE case clusters");
+
+  vec<cluster *> output
+    = jump_table_cluster::find_jump_tables (filtered_clusters);
+  bool r = output.length () < filtered_clusters.length ();
+  if (r)
+    dump_clusters (&output, "JT can be built");
+  output.release ();
+  if (r)
+    return true;
+
+  output = bit_test_cluster::find_bit_tests (filtered_clusters);
+  r = output.length () < filtered_clusters.length ();
+  if (r)
+    dump_clusters (&output, "BT can be built");
+  output.release ();
+  return r;
+}
+
+/* Build case label with MIN and MAX values of a given basic block DEST.  */
+
+static tree
+build_case_label (tree index_type, tree min, tree max, basic_block dest)
+{
+  if (min != NULL_TREE && index_type != TREE_TYPE (min))
+    min = fold_convert (index_type, min);
+  if (max != NULL_TREE && index_type != TREE_TYPE (max))
+    max = fold_convert (index_type, max);
+
+  tree label = gimple_block_label (dest);
+  return build_case_label (min, min == max ? NULL_TREE : max, label);
+}
+
+/* Compare two integer constants.  */
+
+static int
+label_cmp (const void *a, const void *b)
+{
+  const_tree l1 = *(const const_tree *) a;
+  const_tree l2 = *(const const_tree *) b;
+
+  return tree_int_cst_compare (CASE_LOW (l1), CASE_LOW (l2));
+}
+
+/* Convert a given if CHAIN into a switch GIMPLE statement.  */
+
+static void
+convert_if_conditions_to_switch (if_chain *chain)
+{
+  if (!dbg_cnt (if_to_switch))
+    return;
+
+  auto_vec<tree> labels;
+  unsigned entries = chain->m_entries.length ();
+  condition_info *first_cond = chain->m_entries[0];
+  condition_info *last_cond = chain->m_entries[entries - 1];
+
+  edge default_edge = last_cond->m_false_edge;
+  basic_block default_bb = default_edge->dest;
+
+  gimple_stmt_iterator gsi = gsi_for_stmt (first_cond->m_cond);
+  tree index_type = TREE_TYPE (first_cond->m_ranges[0].exp);
+  for (unsigned i = 0; i < entries; i++)
+    {
+      condition_info *info = chain->m_entries[i];
+      basic_block case_bb = info->m_true_edge->dest;
+
+      /* Create a forwarder block if needed.  */
+      if (!info->m_true_edge_phi_mapping.is_empty ())
+	{
+	  info->m_forwarder_bb = split_edge (info->m_true_edge);
+	  case_bb = info->m_forwarder_bb;
+	}
+
+      for (unsigned j = 0; j < info->m_ranges.length (); j++)
+	labels.safe_push (build_case_label (index_type,
+					    info->m_ranges[j].low,
+					    info->m_ranges[j].high,
+					    case_bb));
+      default_bb = info->m_false_edge->dest;
+
+      if (i == 0)
+	{
+	  remove_edge (first_cond->m_true_edge);
+	  remove_edge (first_cond->m_false_edge);
+	}
+      else
+	delete_basic_block (info->m_bb);
+
+      make_edge (first_cond->m_bb, case_bb, 0);
+    }
+
+  labels.qsort (label_cmp);
+
+  edge e = find_edge (first_cond->m_bb, default_bb);
+  if (e == NULL)
+    e = make_edge (first_cond->m_bb, default_bb, 0);
+  gswitch *s
+    = gimple_build_switch (first_cond->m_ranges[0].exp,
+			   build_case_label (index_type, NULL_TREE,
+					     NULL_TREE, default_bb),
+			   labels);
+
+  gsi_remove (&gsi, true);
+  gsi_insert_before (&gsi, s, GSI_NEW_STMT);
+
+  if (dump_file)
+    {
+      fprintf (dump_file, "Expanded into a new gimple STMT: ");
+      print_gimple_stmt (dump_file, s, 0, TDF_SLIM);
+      putc ('\n', dump_file);
+    }
+
+  /* Fill up missing PHI node arguments.  */
+  for (unsigned i = 0; i < chain->m_entries.length (); ++i)
+    {
+      condition_info *info = chain->m_entries[i];
+      for (unsigned j = 0; j < info->m_true_edge_phi_mapping.length (); ++j)
+	{
+	  std::pair<gphi *, tree> item = info->m_true_edge_phi_mapping[j];
+	  add_phi_arg (item.first, item.second,
+		       single_succ_edge (info->m_forwarder_bb),
+		       UNKNOWN_LOCATION);
+	}
+    }
+
+  /* Fill up missing PHI nodes for the default BB.  */
+  for (unsigned j = 0; j < last_cond->m_false_edge_phi_mapping.length (); ++j)
+    {
+      std::pair<gphi *, tree> item = last_cond->m_false_edge_phi_mapping[j];
+      add_phi_arg (item.first, item.second, e, UNKNOWN_LOCATION);
+    }
+}
+
+/* Identify an index variable used in BB in a GIMPLE condition.
+   Save information about the condition into CONDITIONS_IN_BBS.  */
+
+static void
+find_conditions (basic_block bb,
+		 hash_map<basic_block, condition_info> *conditions_in_bbs)
+{
+  gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
+  if (gsi_end_p (gsi))
+    return;
+
+  gcond *cond = dyn_cast<gcond *> (gsi_stmt (gsi));
+  if (cond == NULL)
+    return;
+
+  if (!no_side_effect_bb (bb))
+    return;
+
+  tree lhs = gimple_cond_lhs (cond);
+  tree rhs = gimple_cond_rhs (cond);
+  tree_code code = gimple_cond_code (cond);
+
+  condition_info info (cond);
+
+  gassign *def;
+  if (code == NE_EXPR
+      && TREE_CODE (lhs) == SSA_NAME
+      && (def = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (lhs))) != NULL
+      && integer_zerop (rhs))
+    {
+      enum tree_code rhs_code = gimple_assign_rhs_code (def);
+      if (rhs_code == BIT_IOR_EXPR)
+	{
+	  info.m_ranges.safe_grow (2, true);
+	  init_range_entry (&info.m_ranges[0], gimple_assign_rhs1 (def), NULL);
+	  init_range_entry (&info.m_ranges[1], gimple_assign_rhs2 (def), NULL);
+	}
+    }
+  else
+    {
+      info.m_ranges.safe_grow (1, true);
+      init_range_entry (&info.m_ranges[0], NULL_TREE, cond);
+    }
+
+  /* All identified ranges must have equal expression and IN_P flag.  */
+  if (!info.m_ranges.is_empty ())
+    {
+      edge true_edge, false_edge;
+      tree expr = info.m_ranges[0].exp;
+      bool in_p = info.m_ranges[0].in_p;
+
+      extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
+      info.m_true_edge = in_p ? true_edge : false_edge;
+      info.m_false_edge = in_p ? false_edge : true_edge;
+
+      for (unsigned i = 0; i < info.m_ranges.length (); ++i)
+	if (info.m_ranges[i].exp == NULL_TREE
+	    || info.m_ranges[i].low == NULL_TREE
+	    || info.m_ranges[i].high == NULL_TREE)
+	  return;
+
+      for (unsigned i = 1; i < info.m_ranges.length (); ++i)
+	if (info.m_ranges[i].exp != expr
+	    || info.m_ranges[i].in_p != in_p)
+	  return;
+
+      info.record_phi_mapping (info.m_true_edge,
+			       &info.m_true_edge_phi_mapping);
+      info.record_phi_mapping (info.m_false_edge,
+			       &info.m_false_edge_phi_mapping);
+      conditions_in_bbs->put (bb, info);
+    }
+
+}
+
+namespace {
+
+const pass_data pass_data_if_to_switch =
+{
+  GIMPLE_PASS, /* type */
+  "iftoswitch", /* name */
+  OPTGROUP_NONE, /* optinfo_flags */
+  TV_TREE_IF_TO_SWITCH, /* tv_id */
+  ( PROP_cfg | PROP_ssa ), /* properties_required */
+  0, /* properties_provided */
+  0, /* properties_destroyed */
+  0, /* todo_flags_start */
+  TODO_cleanup_cfg | TODO_update_ssa /* todo_flags_finish */
+};
+
+class pass_if_to_switch : public gimple_opt_pass
+{
+public:
+  pass_if_to_switch (gcc::context *ctxt)
+    : gimple_opt_pass (pass_data_if_to_switch, ctxt)
+  {}
+
+  /* opt_pass methods: */
+  virtual bool gate (function *)
+  {
+    return (jump_table_cluster::is_enabled ()
+	    || bit_test_cluster::is_enabled ());
+  }
+
+  virtual unsigned int execute (function *);
+
+}; // class pass_if_to_switch
+
+unsigned int
+pass_if_to_switch::execute (function *fun)
+{
+  auto_vec<if_chain *> all_candidates;
+  hash_map<basic_block, condition_info> conditions_in_bbs;
+
+  basic_block bb;
+  FOR_EACH_BB_FN (bb, fun)
+    find_conditions (bb, &conditions_in_bbs);
+
+  int *rpo = XNEWVEC (int, n_basic_blocks_for_fn (fun));
+  unsigned n = pre_and_rev_post_order_compute_fn (fun, NULL, rpo, false);
+
+  auto_bitmap seen_bbs;
+  for (int i = n - 1; i >= 0; --i)
+    {
+      basic_block bb = BASIC_BLOCK_FOR_FN (fun, rpo[i]);
+      if (bitmap_bit_p (seen_bbs, bb->index))
+	continue;
+
+      bitmap_set_bit (seen_bbs, bb->index);
+      condition_info *info = conditions_in_bbs.get (bb);
+      if (info)
+	{
+	  if_chain *chain = new if_chain ();
+	  chain->m_entries.safe_push (info);
+	  /* Try to find a chain starting in this BB.  */
+	  while (true)
+	    {
+	      if (!single_pred_p (gimple_bb (info->m_cond)))
+		break;
+	      edge e = single_pred_edge (gimple_bb (info->m_cond));
+	      condition_info *info2 = conditions_in_bbs.get (e->src);
+	      if (!info2 || info->m_ranges[0].exp != info2->m_ranges[0].exp)
+		break;
+
+	      chain->m_entries.safe_push (info2);
+	      bitmap_set_bit (seen_bbs, e->src->index);
+	      info = info2;
+	    }
+
+	  chain->m_entries.reverse ();
+	  if (chain->m_entries.length () >= 3
+	      && chain->check_non_overlapping_cases ()
+	      && chain->is_beneficial ())
+	    {
+	      gcond *cond = chain->m_entries[0]->m_cond;
+	      expanded_location loc = expand_location (gimple_location (cond));
+	      if (dump_file)
+		{
+		  fprintf (dump_file, "Condition chain (at %s:%d) with %d BBs "
+			   "transformed into a switch statement.\n",
+			   loc.file, loc.line,
+			   chain->m_entries.length ());
+		}
+	      all_candidates.safe_push (chain);
+	    }
+	}
+    }
+
+  for (unsigned i = 0; i < all_candidates.length (); i++)
+    {
+      convert_if_conditions_to_switch (all_candidates[i]);
+      delete all_candidates[i];
+    }
+
+  free (rpo);
+  free_dominance_info (CDI_DOMINATORS);
+
+  if (!all_candidates.is_empty ())
+    mark_virtual_operands_for_renaming (fun);
+
+  return 0;
+}
+
+} // anon namespace
+
+gimple_opt_pass *
+make_pass_if_to_switch (gcc::context *ctxt)
+{
+  return new pass_if_to_switch (ctxt);
+}
diff --git a/gcc/passes.def b/gcc/passes.def
index f865bdc19ac..10d7eeb091b 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -93,6 +93,7 @@ along with GCC; see the file COPYING3.  If not see
 	  NEXT_PASS (pass_phiopt, true /* early_p */);
 	  NEXT_PASS (pass_modref);
 	  NEXT_PASS (pass_tail_recursion);
+	  NEXT_PASS (pass_if_to_switch);
 	  NEXT_PASS (pass_convert_switch);
 	  NEXT_PASS (pass_cleanup_eh);
 	  NEXT_PASS (pass_profile);
diff --git a/gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C b/gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C
new file mode 100644
index 00000000000..0f9c8d35ff9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+void fancy_abort(const char *, int, const char *);
+
+enum machine_mode
+{
+  MODE_FLOAT,
+  MODE_DECIMAL_FLOAT,
+  MODE_COMPLEX_INT,
+  MODE_COMPLEX_FLOAT,
+  MODE_VECTOR_BOOL,
+  MODE_VECTOR_FLOAT
+} extern const mode_class;
+
+void tree_node() {
+  if (mode_class)
+    mode_class == MODE_FLOAT || mode_class == MODE_DECIMAL_FLOAT ||
+        mode_class == MODE_COMPLEX_FLOAT || mode_class == MODE_VECTOR_FLOAT
+        ? fancy_abort("aaa", 2, __FUNCTION__),
+        0 : 0;
+  int g = 0;
+}
+
+/* { dg-final { scan-tree-dump "Condition chain \\(at .*\\) with 3 BBs transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
new file mode 100644
index 00000000000..94a0db649e4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int global;
+int foo ();
+
+int main(int argc, char **argv)
+{
+  if (argc == 1)
+    foo ();
+  else if (argc == 2)
+    {
+      global += 1;
+    }
+  else if (argc == 3)
+    {
+      foo ();
+      foo ();
+    }
+  else if (argc == 4)
+    {
+      foo ();
+    }
+  else if (argc == 5)
+    {
+      global = 2;
+    }
+  else
+    global -= 123;
+
+  global -= 12;
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump "Condition chain \\(at .*if-to-switch-1.c:9\\) with 5 BBs transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
new file mode 100644
index 00000000000..b114e74ac37
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int IsHTMLWhitespaceNoRange(int aChar)
+{
+  return aChar == 0x0001 || aChar == 0x000A ||
+         aChar == 0x000C || aChar == 0x000E ||
+         aChar == 0x0020;
+}
+
+/* { dg-final { scan-tree-dump "Condition chain \\(at .*if-to-switch-2.c:7\\) with 3 BBs transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
new file mode 100644
index 00000000000..e157039e75b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int IsHTMLWhitespace(int aChar)
+{
+  return aChar == 0x0009 || aChar == 0x000A ||
+         aChar == 0x000C || aChar == 0x000D ||
+         aChar == 0x0020 || aChar == 0x0030;
+}
+
+/* { dg-final { scan-tree-dump "Condition chain \\(at .*if-to-switch-3.c:8\\) with 3 BBs transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
new file mode 100644
index 00000000000..3ae006f6ca2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int global;
+int foo ();
+
+int main(int argc, char **argv)
+{
+  if (argc == 1)
+    foo ();
+  else if (argc == 2)
+    {
+      global += 1;
+    }
+  else if (argc == 3)
+    {
+      foo ();
+      foo ();
+    }
+  else if (argc == 4)
+    {
+      foo ();
+    }
+  /* This will be removed with EVRP.  */
+  else if (argc == 1)
+    {
+      global = 2;
+    }
+  else
+    global -= 123;
+
+  global -= 12;
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-not "Condition chain" "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-5.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-5.c
new file mode 100644
index 00000000000..46ea5b627c8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-5.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int crud (unsigned char c)
+{
+  return (((((((((((int) c == 46) || (int) c == 44)
+		 || (int) c == 58) || (int) c == 59) || (int) c == 60)
+	      || (int) c == 62) || (int) c == 34) || (int) c == 92)
+	   || (int) c == 39) != 0);
+}
+
+/* { dg-final { scan-tree-dump "Condition chain \\(at .*if-to-switch-5.c:9\\) with 5 BBs transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-6.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-6.c
new file mode 100644
index 00000000000..7af323ae251
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-6.c
@@ -0,0 +1,42 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int global;
+int foo ();
+
+int main(int argc, char **argv)
+{
+  if (argc >= 1 && argc <= 10)
+    foo ();
+  else if (argc == 12)
+    {
+      global += 1;
+    }
+  else if (argc == 13)
+    {
+      foo ();
+      foo ();
+    }
+  else if (argc == 14)
+    {
+      foo ();
+    }
+  /* This will be removed with EVRP.  */
+  else if (argc == 5)
+    {
+      global = 2;
+    }
+  /* This will be removed with EVRP.  */
+  else if (argc >= 7 && argc <= 9)
+    {
+      global = 2;
+    }
+
+  else
+    global -= 123;
+
+  global -= 12;
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-not "Condition chain" "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-7.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-7.c
new file mode 100644
index 00000000000..1a919bf025a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-7.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int global;
+
+int foo(int a)
+{
+  int x = 0;
+  for (unsigned i = 0; i < a; i++)
+  {
+    if (a == 2)
+    {
+      global += 123;
+      x = 1;
+    }
+    else if (a == 3)
+      x = 2;
+    else if (a == 10)
+      x = 3;
+  }
+
+  return x;
+}
+
+/* { dg-final { scan-tree-dump-not "Condition chain " "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-8.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-8.c
new file mode 100644
index 00000000000..a5f1a1eae18
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-8.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch" } */
+
+int global;
+int global1;
+int global2;
+int global3;
+
+int foo(int a, int b)
+{
+  int x = 0;
+  for (unsigned i = 0; i < a; i++)
+  {
+    if (b == 1)
+      global += 2;
+    else if (a == 2)
+      global = 123;
+    else if (a == 3)
+      global1 = 1234;
+    else if (a == 10)
+      global2 = 12345;
+    else if (a == 1)
+      global2 = 123456;
+  }
+}
+
+/* { dg-final { scan-tree-dump-not "Condition chain" "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96480.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96480.c
index f2a91ef9909..cc04721c1df 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr96480.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96480.c
@@ -1,6 +1,6 @@
 /* PR tree-optimization/96480 */
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fdump-tree-optimized -fno-bit-tests" } */
 /* { dg-final { scan-tree-dump " = _\[0-9]* <= 3;" "optimized" } } */
 
 int v[4];
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
index 944362ad076..093e7a57a27 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
@@ -1,6 +1,6 @@
 /* { dg-do run { target { ! "m68k*-*-* mmix*-*-* bfin*-*-* v850*-*-* moxie*-*-* cris*-*-* m32c*-*-* fr30*-*-* mcore*-*-* powerpc*-*-* xtensa*-*-*"} } } */
 
-/* { dg-options "-O2 -fno-inline -fdump-tree-reassoc1-details --param logical-op-non-short-circuit=1" } */
+/* { dg-options "-O2 -fno-inline -fdump-tree-reassoc1-details --param logical-op-non-short-circuit=1 -fno-bit-tests" } */
 /* { dg-additional-options "-mbranch-cost=2" { target branch_cost } } */
 
 
diff --git a/gcc/timevar.def b/gcc/timevar.def
index 08c21c04009..ee87718f3e4 100644
--- a/gcc/timevar.def
+++ b/gcc/timevar.def
@@ -292,6 +292,7 @@ DEFTIMEVAR (TV_VAR_TRACKING          , "variable tracking")
 DEFTIMEVAR (TV_VAR_TRACKING_DATAFLOW , "var-tracking dataflow")
 DEFTIMEVAR (TV_VAR_TRACKING_EMIT     , "var-tracking emit")
 DEFTIMEVAR (TV_TREE_IFCOMBINE        , "tree if-combine")
+DEFTIMEVAR (TV_TREE_IF_TO_SWITCH     , "if to switch conversion")
 DEFTIMEVAR (TV_TREE_UNINIT           , "uninit var analysis")
 DEFTIMEVAR (TV_PLUGIN_INIT           , "plugin initialization")
 DEFTIMEVAR (TV_PLUGIN_RUN            , "plugin execution")
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 62e5b696cab..f8adb902345 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -374,6 +374,7 @@ extern gimple_opt_pass *make_pass_empty_loop (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_graphite (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_graphite_transforms (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_if_conversion (gcc::context *ctxt);
+extern gimple_opt_pass *make_pass_if_to_switch (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_loop_distribution (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_vectorize (gcc::context *ctxt);
 extern gimple_opt_pass *make_pass_simduid_cleanup (gcc::context *ctxt);
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index a2ca1713d4b..96765bdd3f2 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -51,6 +51,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "builtins.h"
 #include "gimplify.h"
 #include "case-cfn-macros.h"
+#include "tree-ssa-reassoc.h"
 
 /*  This is a simple global reassociation pass.  It is, in part, based
     on the LLVM pass of the same name (They do some things more/less
@@ -188,15 +189,6 @@ static struct
   int pows_created;
 } reassociate_stats;
 
-/* Operator, rank pair.  */
-struct operand_entry
-{
-  unsigned int rank;
-  unsigned int id;
-  tree op;
-  unsigned int count;
-  gimple *stmt_to_insert;
-};
 
 static object_allocator<operand_entry> operand_entry_pool
   ("operand entry pool");
@@ -226,7 +218,7 @@ static bool reassoc_stmt_dominates_stmt_p (gimple *, gimple *);
 /* Wrapper around gsi_remove, which adjusts gimple_uid of debug stmts
    possibly added by gsi_remove.  */
 
-bool
+static bool
 reassoc_remove_stmt (gimple_stmt_iterator *gsi)
 {
   gimple *stmt = gsi_stmt (*gsi);
@@ -2406,18 +2398,7 @@ optimize_ops_list (enum tree_code opcode,
    For more information see comments above fold_test_range in fold-const.c,
    this implementation is for GIMPLE.  */
 
-struct range_entry
-{
-  tree exp;
-  tree low;
-  tree high;
-  bool in_p;
-  bool strict_overflow_p;
-  unsigned int idx, next;
-};
 
-void dump_range_entry (FILE *file, struct range_entry *r);
-void debug_range_entry (struct range_entry *r);
 
 /* Dump the range entry R to FILE, skipping its expression if SKIP_EXP.  */
 
@@ -2447,7 +2428,7 @@ debug_range_entry (struct range_entry *r)
    an SSA_NAME and STMT argument is ignored, otherwise STMT
    argument should be a GIMPLE_COND.  */
 
-static void
+void
 init_range_entry (struct range_entry *r, tree exp, gimple *stmt)
 {
   int in_p;
@@ -4284,7 +4265,7 @@ suitable_cond_bb (basic_block bb, basic_block test_bb, basic_block *other_bb,
    range test optimization, all SSA_NAMEs set in the bb are consumed
    in the bb and there are no PHIs.  */
 
-static bool
+bool
 no_side_effect_bb (basic_block bb)
 {
   gimple_stmt_iterator gsi;
diff --git a/gcc/tree-ssa-reassoc.h b/gcc/tree-ssa-reassoc.h
new file mode 100644
index 00000000000..dc7f59f1eca
--- /dev/null
+++ b/gcc/tree-ssa-reassoc.h
@@ -0,0 +1,48 @@
+/* Reassociation for trees.
+   Copyright (C) 2020 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_SSA_REASSOC_H
+#define GCC_SSA_REASSOC_H
+
+/* Operator, rank pair.  */
+struct operand_entry
+{
+  unsigned int rank;
+  unsigned int id;
+  tree op;
+  unsigned int count;
+  gimple *stmt_to_insert;
+};
+
+struct range_entry
+{
+  tree exp;
+  tree low;
+  tree high;
+  bool in_p;
+  bool strict_overflow_p;
+  unsigned int idx, next;
+};
+
+void dump_range_entry (FILE *file, struct range_entry *r);
+void debug_range_entry (struct range_entry *r);
+void init_range_entry (struct range_entry *r, tree exp, gimple *stmt);
+bool no_side_effect_bb (basic_block bb);
+
+#endif  /* GCC_SSA_REASSOC_H  */
diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
index 7515e952eb3..62cfde168c8 100644
--- a/gcc/tree-switch-conversion.h
+++ b/gcc/tree-switch-conversion.h
@@ -48,8 +48,8 @@ class cluster
 {
 public:
   /* Constructor.  */
-  cluster (tree case_label_expr, basic_block case_bb, profile_probability prob,
-	   profile_probability subtree_prob);
+  inline cluster (tree case_label_expr, basic_block case_bb,
+		  profile_probability prob, profile_probability subtree_prob);
 
   /* Destructor.  */
   virtual ~cluster ()
@@ -121,8 +121,9 @@ class simple_cluster: public cluster
 {
 public:
   /* Constructor.  */
-  simple_cluster (tree low, tree high, tree case_label_expr,
-		  basic_block case_bb, profile_probability prob);
+  inline simple_cluster (tree low, tree high, tree case_label_expr,
+			 basic_block case_bb, profile_probability prob,
+			 bool has_forward_bb = false);
 
   /* Destructor.  */
   ~simple_cluster ()
@@ -146,6 +147,11 @@ public:
     return m_high;
   }
 
+  void set_high (tree high)
+  {
+    m_high = high;
+  }
+
   void
   debug ()
   {
@@ -182,12 +188,16 @@ public:
 
   /* True if case is a range.  */
   bool m_range_p;
+
+  /* True if the case will use a forwarder BB.  */
+  bool m_has_forward_bb;
 };
 
 simple_cluster::simple_cluster (tree low, tree high, tree case_label_expr,
-				basic_block case_bb, profile_probability prob):
+				basic_block case_bb, profile_probability prob,
+				bool has_forward_bb):
   cluster (case_label_expr, case_bb, prob, prob),
-  m_low (low), m_high (high)
+  m_low (low), m_high (high), m_has_forward_bb (has_forward_bb)
 {
   m_range_p = m_high != NULL;
   if (m_high == NULL)
@@ -271,7 +281,7 @@ public:
   static inline unsigned int case_values_threshold (void);
 
   /* Return whether jump table expansion is allowed.  */
-  static bool is_enabled (void);
+  static inline bool is_enabled (void);
 };
 
 /* A GIMPLE switch statement can be expanded to a short sequence of bit-wise
-- 
2.28.0

>From 7984458480ceadc6b3c43ed952c21d55305bc567 Mon Sep 17 00:00:00 2001
From: Martin Liska <mli...@suse.cz>
Date: Fri, 2 Oct 2020 14:12:06 +0200
Subject: [PATCH 1/2] Add -fbit-tests option.

gcc/ChangeLog:

	* common.opt: Add new -fbit-tests option.
	* doc/invoke.texi: Document the option.
	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
	Use the option.
	* tree-switch-conversion.h (is_enabled): New function.

gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/switch-4.c: New test.
---
 gcc/common.opt                           |  4 ++++
 gcc/doc/invoke.texi                      |  8 +++++++-
 gcc/testsuite/gcc.dg/tree-ssa/switch-4.c | 25 ++++++++++++++++++++++++
 gcc/tree-switch-conversion.c             |  3 +++
 gcc/tree-switch-conversion.h             |  6 ++++++
 5 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/switch-4.c

diff --git a/gcc/common.opt b/gcc/common.opt
index 7e789d1c47f..aa3d75c2357 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1936,6 +1936,10 @@ fjump-tables
 Common Var(flag_jump_tables) Init(1) Optimization
 Use jump tables for sufficiently large switch statements.
 
+fbit-tests
+Common Var(flag_bit_tests) Init(1) Optimization
+Use bit tests for sufficiently large switch statements.
+
 fkeep-inline-functions
 Common Report Var(flag_keep_inline_functions)
 Generate code for functions even if they are fully inlined.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 631a119181c..9ee62197b51 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -635,7 +635,7 @@ Objective-C and Objective-C++ Dialects}.
 -fno-gnu-unique @gol
 -finhibit-size-directive  -fcommon  -fno-ident @gol
 -fpcc-struct-return  -fpic  -fPIC  -fpie  -fPIE  -fno-plt @gol
--fno-jump-tables @gol
+-fno-jump-tables -fno-bit-tests @gol
 -frecord-gcc-switches @gol
 -freg-struct-return  -fshort-enums  -fshort-wchar @gol
 -fverbose-asm  -fpack-struct[=@var{n}]  @gol
@@ -15879,6 +15879,12 @@ building code that forms part of a dynamic linker and cannot
 reference the address of a jump table.  On some targets, jump tables
 do not require a GOT and this option is not needed.
 
+@item -fno-bit-tests
+@opindex fno-bit-tests
+@opindex fbit-tests
+Do not use bit tests for switch statements even where it would be
+more efficient than other code generation strategies.
+
 @item -ffixed-@var{reg}
 @opindex ffixed
 Treat the register named @var{reg} as a fixed register; generated code
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/switch-4.c b/gcc/testsuite/gcc.dg/tree-ssa/switch-4.c
new file mode 100644
index 00000000000..5953ef34e9b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/switch-4.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { { x86_64-*-* aarch64-*-* ia64-*-* powerpc64-*-* } && lp64 } } } */
+/* { dg-options "-O2 -fno-bit-tests -fdump-tree-switchlower1" } */
+
+int global;
+
+int foo (int x)
+{
+  switch (x) {
+    case 0:
+    case 10:
+      return 1;
+    case 20:
+    case 30:
+    case 62:
+      return 2;
+    case 1000:
+    case 1010:
+    case 1025 ... 1030:
+      return 1;
+    default:
+      return 0;
+  }
+}
+
+/* { dg-final { scan-tree-dump-not "BT:" "switchlower1" } } */
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index 03a1fe632d0..426462e856b 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -1310,6 +1310,9 @@ jump_table_cluster::is_beneficial (const vec<cluster *> &,
 vec<cluster *>
 bit_test_cluster::find_bit_tests (vec<cluster *> &clusters)
 {
+  if (!is_enabled ())
+    return clusters.copy ();
+
   unsigned l = clusters.length ();
   auto_vec<min_cluster_item> min;
   min.reserve (l + 1);
diff --git a/gcc/tree-switch-conversion.h b/gcc/tree-switch-conversion.h
index dbfd9eecba2..7515e952eb3 100644
--- a/gcc/tree-switch-conversion.h
+++ b/gcc/tree-switch-conversion.h
@@ -411,6 +411,12 @@ public:
 						    basic_block case_bb,
 						    profile_probability prob);
 
+  /* Return whether bit test expansion is allowed.  */
+  static inline bool is_enabled (void)
+  {
+    return flag_bit_tests;
+  }
+
   /* True when the jump table handles an entire switch statement.  */
   bool m_handles_entire_switch;
 
-- 
2.28.0

Condition chain (at /home/marxin/Programming/gcc2/libcpp/init.c:555) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:819) with 10 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:1170) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:371) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:391) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:411) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:431) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:2341) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:1856) with 14 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4147) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/libdecnumber/decContext.c:358) with 13 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/libdecnumber/decNumber.c:3322) with 10 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/init.c:555) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:819) with 10 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:1170) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:371) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:391) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:411) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:431) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:2341) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:1856) with 14 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4147) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/simplify-rtx.c:2274) with 
4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/simplify-rtx.c:2272) with 
4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/simplify-rtx.c:2294) with 
4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgcleanup.c:1239) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgcleanup.c:1173) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgcleanup.c:1173) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/godump.c:246) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/godump.c:239) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/regcprop.c:788) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/sched-deps.c:4277) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/sched-deps.c:4732) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/sched-deps.c:2922) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-generic.c:1296) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-generic.c:2104) 
with 11 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2748) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2748) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2748) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2748) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:2781) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:2806) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:2833) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:2929) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:2954) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:3462) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sync.md:3487) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-utils.c:364) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-chrec.c:950) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-data-ref.c:710) with 
4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/trans-mem.c:369) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/trans-mem.c:415) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:5311) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:19876) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:6019) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:25295) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:22982) with 8 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-stmts.c:10374) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-stmts.c:7089) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:3859) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:6473) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:6473) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:953) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:953) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dse.c:2633) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at gimple-match.c:20839) with 6 BBs transformed into a switch 
statement.
Condition chain (at gimple-match.c:18029) with 6 BBs transformed into a switch 
statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:461) 
with 21 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:5996) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:571) 
with 30 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:571) 
with 6 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19177) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:886) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:878) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2976) 
with 15 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:503) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:926) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:765) 
with 9 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:1121) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:1113) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:565) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:557) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:17374) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:17366) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:560) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:552) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:481) 
with 3 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:14473) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-low.c:637) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:15748) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:15747) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:15660) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:15659) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:16909) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:1712) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:20114) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:401) with 22 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:380) with 21 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:8133) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:8127) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:2706) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:2740) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:3488) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:4026) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:4573) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:6566) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:19452) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-ssa-sprintf.c:944) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/read-md.c:472) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/tree-ssa-structalias.c:6634) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgexpand.c:6149) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgexpand.c:4440) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/mangle.c:1890) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/call.c:881) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/search.c:462) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/search.c:518) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/name-lookup.c:2984) 
with 7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/name-lookup.c:2943) 
with 7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:2743) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:2756) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:31009) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:32737) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:34106) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:28568) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:26423) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:18110) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:7524) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:41219) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:13540) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/semantics.c:3597) with 
7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl2.c:1358) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl2.c:5577) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/typeck.c:9473) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:278) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:1466) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:288) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:300) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:450) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:452) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:1490) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lambda.c:1495) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/tree.c:71) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/expr.c:117) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/expr.c:169) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/pt.c:26899) with 17 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/pt.c:18064) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/pt.c:7440) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/pt.c:13012) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:2494) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:2492) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:914) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:911) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:3965) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/constexpr.c:5682) with 
7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/constexpr.c:7642) with 
7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/constexpr.c:7646) with 
6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lex.c:695) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/class.c:1252) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/class.c:1252) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/class.c:1229) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-query.h:89) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-libfuncs.c:247) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-libfuncs.c:259) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto/lto-lang.c:1112) with 
18 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gensupport.c:3266) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gensupport.c:3261) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/read-md.c:472) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/genautomata.c:951) with 8 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/genrecog.c:703) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/genpreds.c:794) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:2491) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.h:344) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/genpeep.c:250) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:896) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/toplev.c:2228) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dce.c:594) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-ccp.c:856) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-alias.c:4089) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/ddg.c:237) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-out.c:1922) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-out.c:162) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-out.c:527) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:13142) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19031) 
with 17 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19030) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19018) 
with 16 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19012) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19003) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19042) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19063) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:20965) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:20963) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6746) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:16395) 
with 24 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6726) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19201) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19200) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:21587) 
with 7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19254) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19279) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19300) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:3328) 
with 22 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:3392) 
with 21 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6797) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6801) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6599) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:12250) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19603) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:1675) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8546) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:6623) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8512) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7110) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7823) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8734) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8435) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8468) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8447) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7085) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7308) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7295) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7197) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7193) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7000) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:1853) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8381) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8359) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8320) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8300) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8282) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8049) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8033) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8019) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8006) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7997) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7990) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7984) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7931) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7929) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7928) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:7964) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:9128) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:9157) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:9072) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8947) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:8971) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:13017) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:16724) 
with 22 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:16598) 
with 22 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:2884) 
with 14 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:3838) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-features.c:547) with 10 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/expmed.c:6272) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/read-rtl-function.c:1400) 
with 10 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/varasm.c:7305) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at insn-dfatab.c:2840) with 6 BBs transformed into a switch 
statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3662) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3658) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3654) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3650) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2497) 
with 12 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2453) 
with 14 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:15505) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:20645) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:26030) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16987) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16983) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16979) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16975) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16987) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16983) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16979) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16975) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16128) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16124) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16120) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16116) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16128) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16124) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16120) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16116) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16387) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16158) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16158) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16171) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16171) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23580) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23516) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23512) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23508) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23504) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29654) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29590) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29586) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29582) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29578) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/asan.h:168) with 9 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/builtins.c:12207) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/builtins.c:4705) with 8 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/loop-iv.c:1569) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cse.c:3350) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-devirt.c:1238) with 4 
BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1309) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1313) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1739) with 8 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1811) with 9 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386-options.c:1176) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/gimple-pretty-print.c:390) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtlanal.c:6192) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:896) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/ifcvt.c:359) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:97) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-object-size.c:312) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/convert.c:105) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/check.c:587) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/parse.c:1819) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/symbol.c:1766) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/intrinsic.c:208) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/intrinsic.c:4929) 
with 4 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/fortran/dump-parse-tree.c:3262) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:3307) 
with 6 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:2320) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:2215) 
with 3 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/fortran/trans-decl.c:2692) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/expr.c:1118) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:8423) with 
6 BBs transformed into a switch statement.
Condition chain (at generic-match.c:18862) with 6 BBs transformed into a switch 
statement.
Condition chain (at generic-match.c:16134) with 6 BBs transformed into a switch 
statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/stor-layout.c:486) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-pretty-print.c:1740) 
with 7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:2115) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:8332) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:8837) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:8719) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-dce.c:964) with 
12 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:97) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/print-tree.c:691) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1112) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:840) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:827) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:896) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:14261) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:14751) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:14669) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:14648) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:14561) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:7083) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:10840) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:11697) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:2968) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/sel-sched-ir.c:2987) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:97) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine-stack-adj.c:189) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine-stack-adj.c:412) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine-stack-adj.c:406) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-in.c:1713) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2cfi.c:2546) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:896) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/reload.c:6536) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-query.c:731) with 
5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-call-cdce.c:561) 
with 3 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/tree-vect-data-refs.c:136) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19430) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19430) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19430) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19430) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19441) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-tailcall.c:656) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-tailcall.c:440) with 
3 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/c-family/c-attribs.c:3717) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/c-family/c-attribs.c:1962) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-lex.c:545) 
with 7 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-format.c:3439) 
with 3 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/c-family/c-ada-spec.c:469) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-common.c:2394) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-common.c:2349) 
with 18 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-common.c:2877) 
with 5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-omp.c:2244) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1818) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1824) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1832) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1843) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1849) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:512) 
with 3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-parser.c:384) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-parser.c:1298) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-parser.c:1262) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10942) with 8 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10772) with 9 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10829) with 10 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10890) with 8 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10993) with 7 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:11042) with 11 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/gimple-parser.c:1579) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-typeck.c:8031) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:9224) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:3254) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:7020) with 7 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-slp.c:900) with 
5 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-opts.c:104) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/postreload.c:1452) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:6616) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:11890) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:9592) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:7549) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:5930) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6750) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6712) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6695) with 4 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:3935) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:2745) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.h:5138) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:97) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimplify.c:14589) with 14 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/early-remat.c:2519) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/recog.c:3598) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/recog.c:3292) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/recog.c:3289) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/recog.c:3370) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/tree-ssa-scopedtables.c:745) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16043) with 6 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3643) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3639) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3635) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3631) 
with 8 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2442) 
with 12 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2398) 
with 14 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:15652) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:20651) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:25947) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17133) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17129) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17125) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17121) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17133) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17129) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17125) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17121) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17405) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17401) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17397) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17393) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17405) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17401) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17397) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17393) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17085) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16872) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16872) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16925) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16925) with 6 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23767) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23703) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23699) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23695) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:23691) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29631) with 3 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29567) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29563) with 4 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29559) with 5 BBs 
transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/config/i386/i386.md:29555) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-prop.c:678) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:97) with 3 
BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/gimple-ssa-isolate-paths.c:241) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-operands.c:587) 
with 4 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:7215) with 4 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:2033) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:2114) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:1874) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:1315) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:1277) with 5 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:1101) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/var-tracking.c:799) with 
3 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/dojump.c:1026) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:2491) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.h:344) with 5 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:896) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/asan.h:168) with 9 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/rtl.h:884) with 3 BBs 
transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-sccvn.c:5777) 
with 5 BBs transformed into a switch statement.
Condition chain (at 
/home/marxin/Programming/gcc2/gcc/gimple-ssa-strength-reduction.c:2138) with 3 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/zlib/deflate.c:363) with 6 
BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:1561) 
with 9 BBs transformed into a switch statement.
Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:1561) 
with 9 BBs transformed into a switch statement.

Reply via email to