diff mbox series

Add if-chain to switch conversion pass.

Message ID 2c3db526-cac6-4eeb-4afb-12024f8d5af2@suse.cz
State New
Headers show
Series Add if-chain to switch conversion pass. | expand

Commit Message

Martin Liška Nov. 4, 2019, 2:23 p.m. UTC
Hello.

The patch adds a new pass that identifies a series of if-elseif
statements and transform then into a GIMPLE switch (if possible).
The pass runs right after tree-ssa pass and I decided to implement
matching of various forms that are introduced by folder (fold_range_test):

1) if condition with equal operation:

   <bb 2> :
   if (argc_8(D) == 1)
     goto <bb 3>; [INV]
   else
     goto <bb 4>; [INV]

2) if condition with a range check:

   <bb 3> :
   _4 = c_13(D) + 198;
   if (_4 <= 1)
     goto <bb 7>; [INV]
   else
     goto <bb 4>; [INV]

3) mixture of 1) and 2) with a or condition:

   <bb 2> :
   _1 = aChar_8(D) == 1;
   _2 = aChar_8(D) == 10;
   _3 = _1 | _2;
   if (_3 != 0)
     goto <bb 5>; [INV]
   else
     goto <bb 3>; [INV]

   or:

   <bb 2> :
   aChar.1_1 = (unsigned int) aChar_10(D);
   _2 = aChar.1_1 + 4294967287;
   _3 = _2 <= 1;
   _4 = aChar_10(D) == 12;
   _5 = _3 | _4;
   if (_5 != 0)
     goto <bb 5>; [INV]
   else
     goto <bb 3>; [INV]

The motivation example in PR88702 is transformed now into:

IsHTMLWhitespace (int aChar)
{
   int iftmp.0_1;

   <bb 2> [local count: 1073741824]:
   switch (aChar_2(D)) <default: <L6> [50.00%], case 9 ... 10: <L7> [50.00%], case 12 ... 13: <L7> [50.00%], case 32: <L7> [50.00%]>

   <bb 3> [local count: 536870913]:
<L6>:

   <bb 4> [local count: 1073741824]:
   # iftmp.0_1 = PHI <1(2), 0(3)>
<L7>:
   return iftmp.0_1;

}

I'm also attaching if-elseif chains that are transformed in make all-host of the GCC compiler.
There are ~800 such transformations. The most beautiful transformation is this one:

$ cat -n gcc/c-family/c-common.c
...
   2895        /* This used to be a switch, but Genix compiler can't handle that.  */
   2896        if (code == NE_EXPR)
   2897          {
   2898            if (max_lt || min_gt)
   2899              val = truthvalue_true_node;
   2900          }
   2901        else if (code == EQ_EXPR)
   2902          {
   2903            if (max_lt || min_gt)
   2904              val = truthvalue_false_node;
   2905          }
...

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Thoughts?
Thanks,
Martin


gcc/ChangeLog:

2019-11-04  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/14799
	PR ipa/88702
	* Makefile.in: Include new tree-if-to-switch.o.
	* common.opt: Document -ftree-if-to-switch.
	* doc/invoke.texi: Likewise.
	* opts.c: Enable the pass with -O2+.
	* passes.def: Add ne pass.
	* timevar.def (TV_TREE_IF_TO_SWITCH): Add new
	timevar.
	* tree-if-to-switch.c: New file.
	* tree-pass.h (make_pass_if_to_switch): New.

gcc/testsuite/ChangeLog:

2019-11-04  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/14799
	PR ipa/88702
	* 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/reassoc-32.c: Disable tree-if-to-switch
	in order to transform the range test.
	* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
---
  gcc/Makefile.in                               |   1 +
  gcc/common.opt                                |   4 +
  gcc/doc/invoke.texi                           |  10 +-
  gcc/opts.c                                    |   1 +
  gcc/passes.def                                |   1 +
  .../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          |  35 +
  .../gcc.dg/tree-ssa/if-to-switch-5.c          |  12 +
  gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c    |   2 +-
  gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c    |   2 +-
  gcc/timevar.def                               |   1 +
  gcc/tree-if-to-switch.c                       | 611 ++++++++++++++++++
  gcc/tree-pass.h                               |   1 +
  15 files changed, 735 insertions(+), 3 deletions(-)
  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/tree-if-to-switch.c
Condition chain (at ../../gcc/asan.h:166) with 12 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/asan.h:166) with 12 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/calls.c:1530) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:6085) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:6436) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:11688) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:344) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:11725) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:11728) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:11794) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:11853) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:4627) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:6813) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:6817) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:7951) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:2235) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:2376) with 18 conditions (18 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:2896) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:3637) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:6104) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:6652) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-omp.c:1563) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-omp.c:1757) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pragma.c:142) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:1759) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:1952) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:401) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1917) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1941) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:510) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2617) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:10660) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11866) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11882) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11886) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:6780) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:8726) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:9391) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:233) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12074) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12095) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12838) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12965) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:1857) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18715) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18743) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18750) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18799) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:19368) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:19384) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3325) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3850) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10779) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:11421) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:14125) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:1868) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:2713) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:3134) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:6855) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1119) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13676) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13707) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13747) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14258) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14260) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14270) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14757) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14761) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14765) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14781) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14785) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14789) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14909) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14913) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14917) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14933) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14937) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14941) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15068) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15068) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15108) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15108) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15112) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15112) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15172) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15172) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15260) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15296) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15304) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15304) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15308) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15308) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15348) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15348) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15352) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15352) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15356) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15356) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15380) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15380) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15384) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15384) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15388) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15388) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15392) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15392) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15435) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15435) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15448) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15448) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15555) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15555) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15576) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15588) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15588) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15595) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15595) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15608) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15608) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15612) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15612) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15615) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15615) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15616) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15616) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15619) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15619) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15623) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15623) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15636) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15636) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15640) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15640) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15643) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15643) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15647) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15647) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15648) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15648) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15655) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15655) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15700) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15756) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15772) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15776) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15787) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15787) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15791) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15791) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15795) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15795) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15796) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15796) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15796) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15799) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15799) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15800) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15800) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15800) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15804) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15804) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15808) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15808) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15820) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15824) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15849) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15849) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15852) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15856) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15889) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15889) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15893) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15893) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15969) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15969) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15995) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15995) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16035) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16035) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16039) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16039) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16115) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16115) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16135) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16135) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16173) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16173) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16177) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16177) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16181) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16181) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16185) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16185) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16188) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16188) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16240) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16255) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16255) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16288) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16288) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16289) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16295) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16295) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16300) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16315) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16315) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16319) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16319) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16319) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16319) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16323) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16323) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16323) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16323) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16327) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16327) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16328) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16328) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16328) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16331) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16331) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16343) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16343) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16348) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16348) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16352) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16352) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16353) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16355) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16355) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16356) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16356) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16376) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16376) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16380) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16380) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16387) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16387) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16387) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16388) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16388) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16391) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16391) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16408) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16408) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16412) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16413) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16433) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16452) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16469) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16477) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16485) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16487) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16487) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16489) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16491) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16491) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16491) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16495) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16495) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16499) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16499) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16509) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16513) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16533) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16536) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16536) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16537) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16540) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16540) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16544) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16544) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16548) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16548) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16565) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16569) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16583) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16583) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16587) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16587) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16623) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16623) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16627) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16627) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16631) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16631) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16635) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16635) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16640) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16644) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16659) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16659) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16663) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16663) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16667) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16667) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16671) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16671) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16770) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16776) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16780) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16800) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16830) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16892) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16938) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16942) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17170) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17174) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17306) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17310) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17330) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17357) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17374) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17418) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17422) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17437) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17454) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17481) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17482) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17498) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17522) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1897) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19703) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19727) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19815) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19839) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19867) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19883) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19887) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19891) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19907) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19911) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19915) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19919) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19939) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19939) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19943) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19943) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19963) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19963) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19967) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19967) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19987) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19991) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19995) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19999) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:20019) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:20023) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2247) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2251) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2265) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22662) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22666) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22670) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22674) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22678) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22738) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22794) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22801) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22805) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22809) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22813) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22817) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22826) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22877) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2291) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22933) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22965) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2302) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2303) with 7 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2306) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2346) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2358) with 7 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24826) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24890) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24946) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24998) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25010) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25010) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25014) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25022) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25026) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25054) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25058) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25062) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25074) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25078) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25078) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25082) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25086) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25090) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25102) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25106) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25118) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25122) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25134) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25138) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25142) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25146) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25166) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25170) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25198) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25202) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28547) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28551) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28555) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28559) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28563) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28618) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28622) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28623) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28626) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28630) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28634) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28679) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28694) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28750) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28803) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28819) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2884) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28859) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28863) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28874) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2888) with 9 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28890) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28930) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28934) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2933) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2977) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2997) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3142) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3161) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3170) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3174) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3189) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3193) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3238) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3257) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3454) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3458) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3462) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3466) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3473) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3477) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3481) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3485) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:471) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:493) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:493) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:499) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:499) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:499) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:499) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:542) with 13 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:547) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:561) with 29 conditions (29 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:561) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:561) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:675) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:675) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:827) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:831) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:853) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:885) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:885) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:912) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:912) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:795) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:811) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:819) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:827) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:17117) with 13 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2662) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2689) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2785) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2810) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:167) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:460) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:593) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cvt.c:861) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cxx-pretty-print.c:641) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:1204) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:10845) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:11691) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:14212) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:5668) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:8970) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/mangle.c:2848) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/mangle.c:3121) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1339) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1452) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1486) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1587) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:31586) with 12 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:42835) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:14927) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:4323) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:4471) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6430) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/type-utils.h:44) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:3634) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:1634) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-show-locus.c:1312) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-show-locus.c:700) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:5410) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:7125) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:8509) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:9890) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:3922) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:1682) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:1849) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:1914) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8141) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8220) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8608) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:9761) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/arith.c:1565) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:184) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:324) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:413) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/convert.c:103) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/convert.c:112) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:4724) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:5378) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dependency.c:1686) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dependency.c:1738) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dependency.c:1761) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dump-parse-tree.c:1205) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/frontend-passes.c:406) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1025) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1058) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1058) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:2100) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/intrinsic.c:953) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/io.c:455) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/io.c:476) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/io.c:664) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2184) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2998) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/openmp.c:588) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:1369) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:4193) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:4357) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/primary.c:1155) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:4155) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:7750) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1038) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1101) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1537) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1785) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1823) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1896) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:2360) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:844) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:950) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:979) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/symbol.c:1765) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-array.c:5003) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:4532) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-types.c:821) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:382) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:5592) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:5613) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:951) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genflags.c:61) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:288) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:288) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype-state.c:378) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype-state.c:378) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype-state.c:422) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype-state.c:422) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genoutput.c:763) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:829) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:932) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.c:1796) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2822) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-loop-versioning.cc:1235) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-pretty-print.c:391) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:238) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:480) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:511) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-split-paths.c:135) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-strength-reduction.c:2138) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-streamer-in.c:216) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:14262) with 17 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:14262) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:14262) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:868) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:3106) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ifcvt.c:1701) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-fnsummary.c:1087) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-icf-gimple.c:150) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:316) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira-build.c:1840) with 8 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira.c:1938) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira-costs.c:1154) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:709) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:720) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:730) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:756) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:899) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:901) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-constraints.c:4213) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-eliminations.c:759) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-cgraph.c:1505) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-cgraph.c:1758) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:1173) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:1404) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-lang.c:1109) with 18 conditions (18 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-lang.c:978) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-in.c:1459) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-in.c:1495) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-out.c:1075) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/mcf.c:151) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/multiple_target.c:275) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:8872) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:4495) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:8292) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:8521) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1098) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1277) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1339) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1444) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1890) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:2783) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:3098) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opts.c:169) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/print-rtl.c:511) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/print-tree.c:491) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:472) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:472) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:605) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:605) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:638) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:638) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-rtl-function.c:1400) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/recog.c:1870) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regcprop.c:554) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regcprop.c:561) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reginfo.c:368) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regrename.c:1311) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regrename.c:1318) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:1359) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:3020) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:5625) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:5647) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:2864) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:329) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:4660) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:5551) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:5562) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:1726) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:3524) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:3540) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:6242) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-deps.c:2962) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-deps.c:4277) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sel-sched.c:2457) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5334) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5412) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5527) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/targhooks.c:417) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/toplev.c:2083) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:1420) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:376) with 10 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:422) with 10 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10018) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10032) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:4479) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:5078) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:7430) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:7432) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:9950) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:9981) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:9995) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-data-ref.c:714) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5104) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:5406) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:5422) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-ccp.c:1791) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dom.c:1925) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dse.c:998) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1211) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1933) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:2376) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:2748) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:2750) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-manip.c:1025) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-operands.c:870) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:1984) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:6303) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-structalias.c:4984) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadbackward.c:752) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadbackward.c:85) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadedge.c:446) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1961) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-patterns.c:4060) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:10437) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:11554) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5330) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5364) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5383) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5421) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2374) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:7093) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:7108) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1525) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1652) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1665) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1672) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:2251) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:572) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:11350) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13676) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13743) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2238) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:3464) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:3533) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4637) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6091) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:12730) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15379) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15440) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2515) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:3886) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:3947) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6163) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:8404) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:2697) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:2733) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ./tm-preds.h:304) with 3 conditions (3 BBs) transformed into a switch statement.

Comments

Jakub Jelinek Nov. 4, 2019, 2:48 p.m. UTC | #1
On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
> The patch adds a new pass that identifies a series of if-elseif
> statements and transform then into a GIMPLE switch (if possible).
> The pass runs right after tree-ssa pass and I decided to implement
> matching of various forms that are introduced by folder (fold_range_test):

Not a review, just a few questions:

1) what does it do if __builtin_expect* has been used, does it preserve
   the probabilities and if in the end decides to expand as ifs, are those
   probabilities retained through it?
2) for the reassoc-*.c testcases, do you get identical or better code
   with the patch?
3) shouldn't it be gimple-if-to-switch.c instead?
4) what code size effect does the patch have say on cc1plus (if you don't
   count the code changes of the patch itself, i.e. revert the patch in the
   stage3 and rebuild just the stage3)?

> +struct case_range
> +{
> +  /* Default constructor.  */
> +  case_range ():
> +    m_min (NULL_TREE), m_max (NULL_TREE)

I admit I'm never sure about coding conventions for C++,
but shouldn't there be a space before :, or even better :
be on the next line before m_min ?

	Jakub
Richard Biener Nov. 5, 2019, 12:38 p.m. UTC | #2
On Mon, Nov 4, 2019 at 3:49 PM Jakub Jelinek <jakub@redhat.com> wrote:
>
> On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
> > The patch adds a new pass that identifies a series of if-elseif
> > statements and transform then into a GIMPLE switch (if possible).
> > The pass runs right after tree-ssa pass and I decided to implement
> > matching of various forms that are introduced by folder (fold_range_test):
>
> Not a review, just a few questions:

Likewise - please do not name switches -ftree-*, 'tree' doens't add anything
but confusion to users.  Thus use -fif-to-switch or -fconvert-if-to-switch

+The transformation can help to produce a faster code for
+the switch statement.

produce faster code.

Doesn't it also produce smaller code eventually?

Please to not put code transform passes into build_ssa_passes (why did
you choose this place)?  The pass should go into pass_all_early_optimizations
instead, and I'm quite sure you want to run _after_ CSE.  I'd even say
that the pass should run as part of switch-conversion, so we build
a representation of a switch internally and then code-generate the optimal
form directly.  For now just put the pass before switch-conversion.

There are functions without comments in the patch and you copied
from DSE which shows in confusing comments left over from the original.

+  mark_virtual_operands_for_renaming (cfun);

if you did nothing renaming all vops is expensive.

I'm missing an overall comment - you are using a dominator walk
but do nothing in the after hook which means you are not really
gathering any data?  You're also setting visited bits on BBs which
means you are visiting alternate BBs during the DOM walk.

> 1) what does it do if __builtin_expect* has been used, does it preserve
>    the probabilities and if in the end decides to expand as ifs, are those
>    probabilities retained through it?
> 2) for the reassoc-*.c testcases, do you get identical or better code
>    with the patch?
> 3) shouldn't it be gimple-if-to-switch.c instead?
> 4) what code size effect does the patch have say on cc1plus (if you don't
>    count the code changes of the patch itself, i.e. revert the patch in the
>    stage3 and rebuild just the stage3)?
>
> > +struct case_range
> > +{
> > +  /* Default constructor.  */
> > +  case_range ():
> > +    m_min (NULL_TREE), m_max (NULL_TREE)
>
> I admit I'm never sure about coding conventions for C++,
> but shouldn't there be a space before :, or even better :
> be on the next line before m_min ?
>
>         Jakub
>
Bernhard Reutner-Fischer Nov. 6, 2019, 9:02 p.m. UTC | #3
On Tue, 5 Nov 2019 13:38:27 +0100
Richard Biener <richard.guenther@gmail.com> wrote:

> On Mon, Nov 4, 2019 at 3:49 PM Jakub Jelinek <jakub@redhat.com> wrote:
> >
> > On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:  
> > > The patch adds a new pass that identifies a series of if-elseif
> > > statements and transform then into a GIMPLE switch (if possible).
> > > The pass runs right after tree-ssa pass and I decided to implement
> > > matching of various forms that are introduced by folder (fold_range_test):  
> >
> > Not a review, just a few questions:  
> 
> Likewise - please do not name switches -ftree-*, 'tree' doens't add anything
> but confusion to users.  Thus use -fif-to-switch or -fconvert-if-to-switch
> 
> +The transformation can help to produce a faster code for
> +the switch statement.
> 
> produce faster code.
> 
> Doesn't it also produce smaller code eventually?
> 
> Please to not put code transform passes into build_ssa_passes (why did
> you choose this place)?  The pass should go into pass_all_early_optimizations
> instead, and I'm quite sure you want to run _after_ CSE.  I'd even say
> that the pass should run as part of switch-conversion, so we build
> a representation of a switch internally and then code-generate the optimal
> form directly.  For now just put the pass before switch-conversion.

Also why do you punt on duplicate conditions like in

> +++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c

> +int main(int argc, char **argv)
> +{
> +  if (argc == 1)
> +  else if (argc == 2)
> +  else if (argc == 3)
> +  else if (argc == 4)
> +  else if (argc == 1)
> +    {

This block is dead, isn't it. Why don't you just discard it but punt?

> +      global = 2;
> +    }
> +  else
> +    global -= 123;

thanks,
> 
> There are functions without comments in the patch and you copied
> from DSE which shows in confusing comments left over from the original.
> 
> +  mark_virtual_operands_for_renaming (cfun);
> 
> if you did nothing renaming all vops is expensive.
> 
> I'm missing an overall comment - you are using a dominator walk
> but do nothing in the after hook which means you are not really
> gathering any data?  You're also setting visited bits on BBs which
> means you are visiting alternate BBs during the DOM walk.
> 
> > 1) what does it do if __builtin_expect* has been used, does it preserve
> >    the probabilities and if in the end decides to expand as ifs, are those
> >    probabilities retained through it?
> > 2) for the reassoc-*.c testcases, do you get identical or better code
> >    with the patch?
> > 3) shouldn't it be gimple-if-to-switch.c instead?
> > 4) what code size effect does the patch have say on cc1plus (if you don't
> >    count the code changes of the patch itself, i.e. revert the patch in the
> >    stage3 and rebuild just the stage3)?
> >  
> > > +struct case_range
> > > +{
> > > +  /* Default constructor.  */
> > > +  case_range ():
> > > +    m_min (NULL_TREE), m_max (NULL_TREE)  
> >
> > I admit I'm never sure about coding conventions for C++,
> > but shouldn't there be a space before :, or even better :
> > be on the next line before m_min ?
> >
> >         Jakub
> >
Martin Liška Nov. 13, 2019, 11:22 a.m. UTC | #4
On 11/4/19 3:48 PM, Jakub Jelinek wrote:
> On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
>> The patch adds a new pass that identifies a series of if-elseif
>> statements and transform then into a GIMPLE switch (if possible).
>> The pass runs right after tree-ssa pass and I decided to implement
>> matching of various forms that are introduced by folder (fold_range_test):
> 
> Not a review, just a few questions:

Hello.

Thank you for it.

> 
> 1) what does it do if __builtin_expect* has been used, does it preserve
>     the probabilities and if in the end decides to expand as ifs, are those
>     probabilities retained through it?

No, it's currently not supported. I can consider adding that as a follow up.

> 2) for the reassoc-*.c testcases, do you get identical or better code
>     with the patch?

The code is the following:

Before:
Optimizing range tests a_5(D) -[10, 10] and -[26, 26]
  into (a_5(D) & -17) != 10

   <bb 2> [local count: 1073741823]:
   _11 = a_5(D) & -17;
   _12 = _11 == 10;
   _1 = a_5(D) == 10;
   _2 = a_5(D) == 12;
   _10 = a_5(D) == 26;
   _9 = _2 | _12;
   if (_9 != 0)
     goto <bb 4>; [56.44%]
   else
     goto <bb 3>; [43.56%]

After:

   <bb 2> [local count: 1073741824]:
   switch (a_2(D)) <default: <L5> [50.00%], case 10: <L6> [50.00%], case 12: <L6> [50.00%], case 26: <L6> [50.00%]>

As seen, reassoc can generate a different range check and then it's about cmp1 | cmp2 | ..
I bet the explicit gswitch is quite equal representation.

> 3) shouldn't it be gimple-if-to-switch.c instead?

Yes, I renamed that.

> 4) what code size effect does the patch have say on cc1plus (if you don't
>     count the code changes of the patch itself, i.e. revert the patch in the
>     stage3 and rebuild just the stage3)?

I've just measures that and it's about:

      VM SIZE                      FILE SIZE
  ++++++++++++++ GROWING        ++++++++++++++
   +0.3% +24.8Ki .rodata        +24.8Ki  +0.3%
   [ = ]       0 .debug_loc     +17.4Ki  +0.0%
   [ = ]       0 .debug_line    +8.77Ki  +0.0%
   +0.0% +2.52Ki .text          +2.52Ki  +0.0%
   +0.1% +1.66Ki .eh_frame      +1.66Ki  +0.1%
   [ = ]       0 .symtab           +216  +0.0%
   [ = ]       0 .debug_abbrev      +32  +0.0%
   +0.0%     +16 .eh_frame_hdr      +16  +0.0%

   +0.1% +29.0Ki TOTAL          +44.7Ki  +0.0%

Martin

> 
>> +struct case_range
>> +{
>> +  /* Default constructor.  */
>> +  case_range ():
>> +    m_min (NULL_TREE), m_max (NULL_TREE)
> 
> I admit I'm never sure about coding conventions for C++,
> but shouldn't there be a space before :, or even better :
> be on the next line before m_min ?
> 
> 	Jakub
>
Michael Matz Nov. 13, 2019, 3:43 p.m. UTC | #5
Hi,

On Wed, 13 Nov 2019, Martin Liška wrote:

> > Not a review, just a few questions:
> 
> Hello.
> 
> Thank you for it.
> 
> > 
> > 1) what does it do if __builtin_expect* has been used, does it preserve
> >     the probabilities and if in the end decides to expand as ifs, are those
> >     probabilities retained through it?
> 
> No, it's currently not supported. I can consider adding that as a follow up.

But given that you apply the transformation even to small if ladders this 
looses quite some info then.

> > 2) for the reassoc-*.c testcases, do you get identical or better code
> >     with the patch?
> 
> The code is the following:
> 
> Before:
> Optimizing range tests a_5(D) -[10, 10] and -[26, 26]
>  into (a_5(D) & -17) != 10
> 
>   <bb 2> [local count: 1073741823]:
>   _11 = a_5(D) & -17;
>   _12 = _11 == 10;
>   _1 = a_5(D) == 10;
>   _2 = a_5(D) == 12;
>   _10 = a_5(D) == 26;
>   _9 = _2 | _12;
>   if (_9 != 0)
>     goto <bb 4>; [56.44%]
>   else
>     goto <bb 3>; [43.56%]
> 
> After:
> 
>   <bb 2> [local count: 1073741824]:
>   switch (a_2(D)) <default: <L5> [50.00%], case 10: <L6> [50.00%], case 12:
>   <L6> [50.00%], case 26: <L6> [50.00%]>

And here I bet that Jakub was asking for final code, not intermediate 
code.  In particular the bit trick with transforming a test for 
a \in {10,26} into (a&-17)==10.  The switch still tests for 10,26, and in 
the end it should be ensured that the same trickery is employed to 
actually implement the switch.

> As seen, reassoc can generate a different range check and then it's about cmp1
> | cmp2 | ..
> I bet the explicit gswitch is quite equal representation.

As long as the final code is the same or better, sure.  Otherwise it's a 
more canonical representation with suboptimal expansion, and the latter 
should be fixed otherwise it's introducing a regression.


Ciao,
Michael.
Martin Liška Nov. 14, 2019, 9:39 a.m. UTC | #6
On 11/5/19 1:38 PM, Richard Biener wrote:
> On Mon, Nov 4, 2019 at 3:49 PM Jakub Jelinek <jakub@redhat.com> wrote:
>>
>> On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
>>> The patch adds a new pass that identifies a series of if-elseif
>>> statements and transform then into a GIMPLE switch (if possible).
>>> The pass runs right after tree-ssa pass and I decided to implement
>>> matching of various forms that are introduced by folder (fold_range_test):
>>
>> Not a review, just a few questions:

Hello.

> 
> Likewise - please do not name switches -ftree-*, 'tree' doens't add anything
> but confusion to users.  Thus use -fif-to-switch or -fconvert-if-to-switch

Agree with you, I selected the later option.

> 
> +The transformation can help to produce a faster code for
> +the switch statement.
> 
> produce faster code.

Fixed.

> 
> Doesn't it also produce smaller code eventually?

In some situation yes, but generally it leads to more jump tables
(which are bigger when expanded).

> 
> Please to not put code transform passes into build_ssa_passes (why did
> you choose this place)?

Well, that was my initial pass selection as I wanted to have a GIMPLE
code close to what FEs produce.

>  The pass should go into pass_all_early_optimizations
> instead, and I'm quite sure you want to run _after_ CSE.  I'd even say
> that the pass should run as part of switch-conversion, so we build
> a representation of a switch internally and then code-generate the optimal
> form directly.  For now just put the pass before switch-conversion.

But yes, the suggested place is much better place and we can benefit from
VRP (that will kill dead conditions in a if-else chain)

> 
> There are functions without comments in the patch and you copied
> from DSE which shows in confusing comments left over from the original.
> 
> +  mark_virtual_operands_for_renaming (cfun);
> 
> if you did nothing renaming all vops is expensive.

This one is needed for situations like:

fn1 ()
{
   <unnamed type> a.0_1;

   <bb 2> :
   # VUSE <.MEM_5(D)>
   a.0_1 = a;
   if (a.0_1 == 0)
     goto <bb 6>; [INV]
   else
     goto <bb 3>; [INV]

   <bb 3> :
   if (a.0_1 == 1)
     goto <bb 6>; [INV]
   else
     goto <bb 4>; [INV]

   <bb 4> :
   if (a.0_1 == 2)
     goto <bb 5>; [INV]
   else
     goto <bb 6>; [INV]

   <bb 5> :
   # .MEM_6 = VDEF <.MEM_5(D)>
   fn2 ();

   <bb 6> :
   # .MEM_4 = PHI <.MEM_5(D)(2), .MEM_5(D)(3), .MEM_5(D)(4), .MEM_6(5)>
   # VUSE <.MEM_4>
   return;

}

where without the call, I end up with:

   <bb 2> :
   # VUSE <.MEM_5(D)>
   a.0_1 = a;
   switch (a.0_1) <default: <L8> [INV], case 0: <L8> [INV], case 1: <L8> [INV], case 2: <L9> [INV]>

   <bb 3> :
<L9>:
   # .MEM_6 = VDEF <.MEM_5(D)>
   fn2 ();

   <bb 4> :
   # .MEM_4 = PHI <.MEM_6(3), (2)>


> 
> I'm missing an overall comment - you are using a dominator walk
> but do nothing in the after hook which means you are not really
> gathering any data?  You're also setting visited bits on BBs which
> means you are visiting alternate BBs during the DOM walk.

You are right, I'm a bit cheating with the DOM walk as I also mark visited BBs.
What I want is for each if-else condition, I want to visit the first IF in such
chain. That's why I decided to iterate in DOMINATOR order.
Can I do it simpler?

Thanks,
Martin

> 
>> 1) what does it do if __builtin_expect* has been used, does it preserve
>>     the probabilities and if in the end decides to expand as ifs, are those
>>     probabilities retained through it?
>> 2) for the reassoc-*.c testcases, do you get identical or better code
>>     with the patch?
>> 3) shouldn't it be gimple-if-to-switch.c instead?
>> 4) what code size effect does the patch have say on cc1plus (if you don't
>>     count the code changes of the patch itself, i.e. revert the patch in the
>>     stage3 and rebuild just the stage3)?
>>
>>> +struct case_range
>>> +{
>>> +  /* Default constructor.  */
>>> +  case_range ():
>>> +    m_min (NULL_TREE), m_max (NULL_TREE)
>>
>> I admit I'm never sure about coding conventions for C++,
>> but shouldn't there be a space before :, or even better :
>> be on the next line before m_min ?
>>
>>          Jakub
>>
Martin Liška Nov. 14, 2019, 9:41 a.m. UTC | #7
On 11/6/19 10:02 PM, Bernhard Reutner-Fischer wrote:
> Also why do you punt on duplicate conditions like in
> 
>> +++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
>> +int main(int argc, char **argv)
>> +{
>> +  if (argc == 1)
>> +  else if (argc == 2)
>> +  else if (argc == 3)
>> +  else if (argc == 4)
>> +  else if (argc == 1)
>> +    {
> This block is dead, isn't it. Why don't you just discard it but punt?
> 

Hello.

After I moved the pass later in optimization pipeline, such dead conditions
are already gone. What's remaining are situations like:

if (argc >= 1 && argc <= 10)
...
else if (argc >= 8 && argc <= 15)

which are overlapping intervals. I'm not planning to handle these in the first
iteration of the patch.

Martin
Martin Liška Nov. 14, 2019, 9:44 a.m. UTC | #8
On 11/13/19 4:43 PM, Michael Matz wrote:
> Hi,
> 
> On Wed, 13 Nov 2019, Martin Liška wrote:
> 
>>> Not a review, just a few questions:
>>
>> Hello.
>>
>> Thank you for it.
>>
>>>
>>> 1) what does it do if __builtin_expect* has been used, does it preserve
>>>      the probabilities and if in the end decides to expand as ifs, are those
>>>      probabilities retained through it?
>>
>> No, it's currently not supported. I can consider adding that as a follow up.
> 
> But given that you apply the transformation even to small if ladders this
> looses quite some info then.

Yes. Based on my experiments, the patch does not convert if-else chain
with __builtin_expect* right now.

> 
>>> 2) for the reassoc-*.c testcases, do you get identical or better code
>>>      with the patch?
>>
>> The code is the following:
>>
>> Before:
>> Optimizing range tests a_5(D) -[10, 10] and -[26, 26]
>>   into (a_5(D) & -17) != 10
>>
>>    <bb 2> [local count: 1073741823]:
>>    _11 = a_5(D) & -17;
>>    _12 = _11 == 10;
>>    _1 = a_5(D) == 10;
>>    _2 = a_5(D) == 12;
>>    _10 = a_5(D) == 26;
>>    _9 = _2 | _12;
>>    if (_9 != 0)
>>      goto <bb 4>; [56.44%]
>>    else
>>      goto <bb 3>; [43.56%]
>>
>> After:
>>
>>    <bb 2> [local count: 1073741824]:
>>    switch (a_2(D)) <default: <L5> [50.00%], case 10: <L6> [50.00%], case 12:
>>    <L6> [50.00%], case 26: <L6> [50.00%]>
> 
> And here I bet that Jakub was asking for final code, not intermediate
> code.  In particular the bit trick with transforming a test for
> a \in {10,26} into (a&-17)==10.  The switch still tests for 10,26, and in
> the end it should be ensured that the same trickery is employed to
> actually implement the switch.

I agree that (a&-17)==10 is more elegant trick here ...

> 
>> As seen, reassoc can generate a different range check and then it's about cmp1
>> | cmp2 | ..
>> I bet the explicit gswitch is quite equal representation.
> 
> As long as the final code is the same or better, sure.  Otherwise it's a
> more canonical representation with suboptimal expansion, and the latter
> should be fixed otherwise it's introducing a regression.

... and yes, the gswitch expansion is not capable of such smart interval tests.
We can improve that in the future.

Martin

> 
> 
> Ciao,
> Michael.
>
Richard Biener Nov. 14, 2019, 10:37 a.m. UTC | #9
On Thu, Nov 14, 2019 at 10:39 AM Martin Liška <mliska@suse.cz> wrote:
>
> On 11/5/19 1:38 PM, Richard Biener wrote:
> > On Mon, Nov 4, 2019 at 3:49 PM Jakub Jelinek <jakub@redhat.com> wrote:
> >>
> >> On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
> >>> The patch adds a new pass that identifies a series of if-elseif
> >>> statements and transform then into a GIMPLE switch (if possible).
> >>> The pass runs right after tree-ssa pass and I decided to implement
> >>> matching of various forms that are introduced by folder (fold_range_test):
> >>
> >> Not a review, just a few questions:
>
> Hello.
>
> >
> > Likewise - please do not name switches -ftree-*, 'tree' doens't add anything
> > but confusion to users.  Thus use -fif-to-switch or -fconvert-if-to-switch
>
> Agree with you, I selected the later option.
>
> >
> > +The transformation can help to produce a faster code for
> > +the switch statement.
> >
> > produce faster code.
>
> Fixed.
>
> >
> > Doesn't it also produce smaller code eventually?
>
> In some situation yes, but generally it leads to more jump tables
> (which are bigger when expanded).
>
> >
> > Please to not put code transform passes into build_ssa_passes (why did
> > you choose this place)?
>
> Well, that was my initial pass selection as I wanted to have a GIMPLE
> code close to what FEs produce.
>
> >  The pass should go into pass_all_early_optimizations
> > instead, and I'm quite sure you want to run _after_ CSE.  I'd even say
> > that the pass should run as part of switch-conversion, so we build
> > a representation of a switch internally and then code-generate the optimal
> > form directly.  For now just put the pass before switch-conversion.
>
> But yes, the suggested place is much better place and we can benefit from
> VRP (that will kill dead conditions in a if-else chain)
>
> >
> > There are functions without comments in the patch and you copied
> > from DSE which shows in confusing comments left over from the original.
> >
> > +  mark_virtual_operands_for_renaming (cfun);
> >
> > if you did nothing renaming all vops is expensive.
>
> This one is needed for situations like:
>
> fn1 ()
> {
>    <unnamed type> a.0_1;
>
>    <bb 2> :
>    # VUSE <.MEM_5(D)>
>    a.0_1 = a;
>    if (a.0_1 == 0)
>      goto <bb 6>; [INV]
>    else
>      goto <bb 3>; [INV]
>
>    <bb 3> :
>    if (a.0_1 == 1)
>      goto <bb 6>; [INV]
>    else
>      goto <bb 4>; [INV]
>
>    <bb 4> :
>    if (a.0_1 == 2)
>      goto <bb 5>; [INV]
>    else
>      goto <bb 6>; [INV]
>
>    <bb 5> :
>    # .MEM_6 = VDEF <.MEM_5(D)>
>    fn2 ();
>
>    <bb 6> :
>    # .MEM_4 = PHI <.MEM_5(D)(2), .MEM_5(D)(3), .MEM_5(D)(4), .MEM_6(5)>
>    # VUSE <.MEM_4>
>    return;
>
> }
>
> where without the call, I end up with:
>
>    <bb 2> :
>    # VUSE <.MEM_5(D)>
>    a.0_1 = a;
>    switch (a.0_1) <default: <L8> [INV], case 0: <L8> [INV], case 1: <L8> [INV], case 2: <L9> [INV]>
>
>    <bb 3> :
> <L9>:
>    # .MEM_6 = VDEF <.MEM_5(D)>
>    fn2 ();
>
>    <bb 4> :
>    # .MEM_4 = PHI <.MEM_6(3), (2)>

I meant you are doing it unconditionally even if you didn't transform
any if-then-else chain.

>
> >
> > I'm missing an overall comment - you are using a dominator walk
> > but do nothing in the after hook which means you are not really
> > gathering any data?  You're also setting visited bits on BBs which
> > means you are visiting alternate BBs during the DOM walk.
>
> You are right, I'm a bit cheating with the DOM walk as I also mark visited BBs.
> What I want is for each if-else condition, I want to visit the first IF in such
> chain. That's why I decided to iterate in DOMINATOR order.
> Can I do it simpler?

Put that in a comment, do away with domwalk and instead start from
ENTRY_BLOCK, using a worklist seeded by {first,next}_dom_son ()
and avoid putting visited blocks on that worklist.

Btw, what about if-chains nested in another if-chain?  Don't you want to
transform "inner" chains first or does it really not matter (you're adjusting
the CFG, doing that inside the domwalk is fishy since that also uses
pre-computed RPO order; the simple dom-son walking should work
but you of course might miss some blocks depending on how you set up
things).

Richard.

> Thanks,
> Martin
>
> >
> >> 1) what does it do if __builtin_expect* has been used, does it preserve
> >>     the probabilities and if in the end decides to expand as ifs, are those
> >>     probabilities retained through it?
> >> 2) for the reassoc-*.c testcases, do you get identical or better code
> >>     with the patch?
> >> 3) shouldn't it be gimple-if-to-switch.c instead?
> >> 4) what code size effect does the patch have say on cc1plus (if you don't
> >>     count the code changes of the patch itself, i.e. revert the patch in the
> >>     stage3 and rebuild just the stage3)?
> >>
> >>> +struct case_range
> >>> +{
> >>> +  /* Default constructor.  */
> >>> +  case_range ():
> >>> +    m_min (NULL_TREE), m_max (NULL_TREE)
> >>
> >> I admit I'm never sure about coding conventions for C++,
> >> but shouldn't there be a space before :, or even better :
> >> be on the next line before m_min ?
> >>
> >>          Jakub
> >>
>
Bernhard Reutner-Fischer Nov. 14, 2019, 12:30 p.m. UTC | #10
On Thu, 14 Nov 2019 10:41:25 +0100
Martin Liška <mliska@suse.cz> wrote:

> On 11/6/19 10:02 PM, Bernhard Reutner-Fischer wrote:
> > Also why do you punt on duplicate conditions like in
> >   
> >> +++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
> >> +int main(int argc, char **argv)
> >> +{
> >> +  if (argc == 1)
> >> +  else if (argc == 2)
> >> +  else if (argc == 3)
> >> +  else if (argc == 4)
> >> +  else if (argc == 1)
> >> +    {  
> > This block is dead, isn't it. Why don't you just discard it but punt?
> >   
> 
> Hello.
> 
> After I moved the pass later in optimization pipeline, such dead conditions

nice

> are already gone. What's remaining are situations like:
> 
> if (argc >= 1 && argc <= 10)
> ...
> else if (argc >= 8 && argc <= 15)
> 
> which are overlapping intervals. I'm not planning to handle these in the first
> iteration of the patch.

yea. Later when we see a new interval overlapping old, we can adjust
the new to clamp to the intersection of old and new. We'd need to
generate one or more artificial intervals covering the delta interval
with the body of new if we find intervening previous intervals, which
complicates things more than a first attempt of a patch should
supposedly do, agree. One step at a time :)

thanks for moving it later in the pipeline!
cheers,
Martin Liška Nov. 15, 2019, 1:54 p.m. UTC | #11
On 11/14/19 11:37 AM, Richard Biener wrote:
> On Thu, Nov 14, 2019 at 10:39 AM Martin Liška <mliska@suse.cz> wrote:
>>
>> On 11/5/19 1:38 PM, Richard Biener wrote:
>>> On Mon, Nov 4, 2019 at 3:49 PM Jakub Jelinek <jakub@redhat.com> wrote:
>>>>
>>>> On Mon, Nov 04, 2019 at 03:23:20PM +0100, Martin Liška wrote:
>>>>> The patch adds a new pass that identifies a series of if-elseif
>>>>> statements and transform then into a GIMPLE switch (if possible).
>>>>> The pass runs right after tree-ssa pass and I decided to implement
>>>>> matching of various forms that are introduced by folder (fold_range_test):
>>>>
>>>> Not a review, just a few questions:
>>
>> Hello.
>>
>>>
>>> Likewise - please do not name switches -ftree-*, 'tree' doens't add anything
>>> but confusion to users.  Thus use -fif-to-switch or -fconvert-if-to-switch
>>
>> Agree with you, I selected the later option.
>>
>>>
>>> +The transformation can help to produce a faster code for
>>> +the switch statement.
>>>
>>> produce faster code.
>>
>> Fixed.
>>
>>>
>>> Doesn't it also produce smaller code eventually?
>>
>> In some situation yes, but generally it leads to more jump tables
>> (which are bigger when expanded).
>>
>>>
>>> Please to not put code transform passes into build_ssa_passes (why did
>>> you choose this place)?
>>
>> Well, that was my initial pass selection as I wanted to have a GIMPLE
>> code close to what FEs produce.
>>
>>>   The pass should go into pass_all_early_optimizations
>>> instead, and I'm quite sure you want to run _after_ CSE.  I'd even say
>>> that the pass should run as part of switch-conversion, so we build
>>> a representation of a switch internally and then code-generate the optimal
>>> form directly.  For now just put the pass before switch-conversion.
>>
>> But yes, the suggested place is much better place and we can benefit from
>> VRP (that will kill dead conditions in a if-else chain)
>>
>>>
>>> There are functions without comments in the patch and you copied
>>> from DSE which shows in confusing comments left over from the original.
>>>
>>> +  mark_virtual_operands_for_renaming (cfun);
>>>
>>> if you did nothing renaming all vops is expensive.
>>
>> This one is needed for situations like:
>>
>> fn1 ()
>> {
>>     <unnamed type> a.0_1;
>>
>>     <bb 2> :
>>     # VUSE <.MEM_5(D)>
>>     a.0_1 = a;
>>     if (a.0_1 == 0)
>>       goto <bb 6>; [INV]
>>     else
>>       goto <bb 3>; [INV]
>>
>>     <bb 3> :
>>     if (a.0_1 == 1)
>>       goto <bb 6>; [INV]
>>     else
>>       goto <bb 4>; [INV]
>>
>>     <bb 4> :
>>     if (a.0_1 == 2)
>>       goto <bb 5>; [INV]
>>     else
>>       goto <bb 6>; [INV]
>>
>>     <bb 5> :
>>     # .MEM_6 = VDEF <.MEM_5(D)>
>>     fn2 ();
>>
>>     <bb 6> :
>>     # .MEM_4 = PHI <.MEM_5(D)(2), .MEM_5(D)(3), .MEM_5(D)(4), .MEM_6(5)>
>>     # VUSE <.MEM_4>
>>     return;
>>
>> }
>>
>> where without the call, I end up with:
>>
>>     <bb 2> :
>>     # VUSE <.MEM_5(D)>
>>     a.0_1 = a;
>>     switch (a.0_1) <default: <L8> [INV], case 0: <L8> [INV], case 1: <L8> [INV], case 2: <L9> [INV]>
>>
>>     <bb 3> :
>> <L9>:
>>     # .MEM_6 = VDEF <.MEM_5(D)>
>>     fn2 ();
>>
>>     <bb 4> :
>>     # .MEM_4 = PHI <.MEM_6(3), (2)>
> 
> I meant you are doing it unconditionally even if you didn't transform
> any if-then-else chain.

Ah, I've got it ;)

> 
>>
>>>
>>> I'm missing an overall comment - you are using a dominator walk
>>> but do nothing in the after hook which means you are not really
>>> gathering any data?  You're also setting visited bits on BBs which
>>> means you are visiting alternate BBs during the DOM walk.
>>
>> You are right, I'm a bit cheating with the DOM walk as I also mark visited BBs.
>> What I want is for each if-else condition, I want to visit the first IF in such
>> chain. That's why I decided to iterate in DOMINATOR order.
>> Can I do it simpler?
> 
> Put that in a comment, do away with domwalk and instead start from
> ENTRY_BLOCK, using a worklist seeded by {first,next}_dom_son ()
> and avoid putting visited blocks on that worklist.

Rewritten to that pattern. Thank you for it, the code is much smaller as
the dom walker is really not needed.

> 
> Btw, what about if-chains nested in another if-chain?

Yes, it's supported. Actually the comparison BBs in a pair of if-chains
can't overlap, so all is fine and we can't mess up CFG. Moreover, I first
walk the DOM, analyze all if-chains and later then all the candidates are
transformed.

> Don't you want to
> transform "inner" chains first or does it really not matter (you're adjusting
> the CFG, doing that inside the domwalk is fishy since that also uses
> pre-computed RPO order; the simple dom-son walking should work
> but you of course might miss some blocks depending on how you set up
> things).

As explained, it's not a deal.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests. I'm also sending
dump for make all-host.

Ready to be installed?
Thanks,
Martin

> 
> Richard.
> 
>> Thanks,
>> Martin
>>
>>>
>>>> 1) what does it do if __builtin_expect* has been used, does it preserve
>>>>      the probabilities and if in the end decides to expand as ifs, are those
>>>>      probabilities retained through it?
>>>> 2) for the reassoc-*.c testcases, do you get identical or better code
>>>>      with the patch?
>>>> 3) shouldn't it be gimple-if-to-switch.c instead?
>>>> 4) what code size effect does the patch have say on cc1plus (if you don't
>>>>      count the code changes of the patch itself, i.e. revert the patch in the
>>>>      stage3 and rebuild just the stage3)?
>>>>
>>>>> +struct case_range
>>>>> +{
>>>>> +  /* Default constructor.  */
>>>>> +  case_range ():
>>>>> +    m_min (NULL_TREE), m_max (NULL_TREE)
>>>>
>>>> I admit I'm never sure about coding conventions for C++,
>>>> but shouldn't there be a space before :, or even better :
>>>> be on the next line before m_min ?
>>>>
>>>>           Jakub
>>>>
>>
Condition chain (at ../../gcc/alias.c:2854) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/alias.c:2856) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/asan.c:2645) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/asan.h:166) with 12 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/asan.h:166) with 12 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/attribs.c:733) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:10683) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:2574) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:2600) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:3663) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:427) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:6717) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:8511) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:8567) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/builtins.c:8568) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/caller-save.c:1015) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/calls.c:1530) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/calls.c:1553) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/calls.c:2425) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/calls.c:630) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-convert.c:91) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10425) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10482) with 11 conditions (11 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10543) with 9 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10595) with 9 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10646) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:10692) with 12 conditions (12 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:11270) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:11930) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:2095) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:5194) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:5304) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:5661) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:6356) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:6505) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:7400) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:7422) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:8110) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:8177) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:8309) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:8412) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-decl.c:9552) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:265) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:284) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:356) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:464) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:515) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:562) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:615) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-fold.c:664) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:12308) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:17729) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:2576) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-parser.c:351) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:10041) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:10398) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:10634) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:11449) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:12613) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:12901) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13014) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13082) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13319) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13351) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13377) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:13977) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:1878) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:1912) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:1973) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:2238) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:2284) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:2323) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:2527) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:2814) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:3028) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:3177) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:3547) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:3812) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:4329) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:5083) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:5481) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:6263) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:6814) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:6818) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:7517) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:7525) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:7713) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:8205) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:9399) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:9656) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:9909) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/c-typeck.c:9984) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-ada-spec.c:2234) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-ada-spec.c:2264) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-ada-spec.c:2795) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-ada-spec.c:467) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-ada-spec.c:643) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:1305) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:1819) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:1819) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:1865) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:2470) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:2505) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:3492) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-attribs.c:3762) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:1334) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:2238) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:2899) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:3232) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:3640) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:3723) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-common.c:6107) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-format.c:2443) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-format.c:3652) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-format.c:5211) with 7 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-format.c:5228) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:1067) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:1090) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:1116) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:1139) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:1371) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:429) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-lex.c:546) with 8 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-omp.c:1563) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-omp.c:1757) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-omp.c:2117) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-opts.c:1458) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pragma.c:142) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:1759) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:1952) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-pretty-print.c:401) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1442) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1696) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1917) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:1941) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:2008) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:2014) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:2165) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:217) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:2850) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:491) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:51) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c-family/c-warn.c:68) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:224) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:2500) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:2702) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:5018) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:5766) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cfgexpand.c:6119) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/c/gimple-parser.c:744) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cgraph.h:2618) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:10659) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11865) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11880) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:11885) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:12945) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:14044) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:2756) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:3933) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:5544) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:6234) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:6687) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:6697) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:6779) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:8725) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:9390) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/combine.c:9584) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:233) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/constraints.md:234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/driver-i386.c:642) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12094) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:12964) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:14682) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:15004) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:15007) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:15699) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:16195) with 24 conditions (24 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:16207) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:1856) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18686) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18714) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18740) with 12 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18749) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18755) with 16 conditions (16 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18767) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18779) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18935) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18936) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18937) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18938) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18940) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18974) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:18981) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:19026) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:19367) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:19383) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:20664) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:20666) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:20668) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:20670) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:20672) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:21282) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:21596) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:21645) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:22142) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:2280) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:2620) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:2882) with 14 conditions (14 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3322) with 22 conditions (22 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3562) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3569) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3573) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3577) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3699) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3809) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3832) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3840) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:3849) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:9548) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.c:9703) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10033) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10035) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10359) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10778) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:10810) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:11420) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:12461) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:12510) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:14098) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:15563) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:15588) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:15640) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:15728) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:16754) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:16803) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:16889) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:1715) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:2711) with 9 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:3524) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:3633) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:374) with 22 conditions (22 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:395) with 22 conditions (22 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:4068) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:4611) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:6604) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:6854) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8206) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8208) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8412) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8491) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8526) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8528) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8571) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8573) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8621) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8690) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8692) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8746) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8748) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8845) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:8847) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-expand.c:9888) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-features.c:547) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386-features.c:826) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1030) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1053) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1090) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1119) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13092) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13092) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13105) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13105) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13115) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13180) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13285) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13285) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13298) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13298) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13304) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13332) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13400) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13417) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13421) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13499) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13499) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13606) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13606) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13619) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13619) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13676) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13678) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1368) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13700) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13707) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13726) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13726) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13736) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13747) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13747) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13783) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13844) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13844) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13850) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13850) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13861) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13873) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13947) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13947) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13975) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13996) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:13996) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14049) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14049) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14095) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14216) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14216) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14246) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14246) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14258) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14260) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14349) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14349) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14757) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1475) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14761) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14909) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:14913) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15068) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15068) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1513) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15256) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1533) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15370) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15431) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15431) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15444) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15444) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15576) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15613) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15613) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15790) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15790) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15849) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15849) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15995) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:15995) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16131) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16131) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16184) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16184) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16289) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16347) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:16910) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17151) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17809) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:17932) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18160) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18162) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18218) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18264) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18283) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18340) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18400) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18419) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18488) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18564) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18672) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:18899) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:1897) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19448) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19544) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19703) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19727) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:19804) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2011) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2063) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:21521) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22332) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2247) with 14 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22566) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2265) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:22705) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2302) with 14 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24826) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:24890) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:25143) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:26264) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:26656) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:26989) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28447) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:28518) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:2884) with 13 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3142) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3161) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:3680) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:4350) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:4385) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:4420) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:4514) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:4548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:471) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:493) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5005) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5299) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5329) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5383) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5446) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:547) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5508) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:555) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5607) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5646) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5760) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:5800) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:614) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:640) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:742) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:767) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:818) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:826) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:839) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:856) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:860) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:860) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:885) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:885) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:912) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:912) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/i386.md:912) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/mmx.md:3314) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1269) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1290) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1315) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1324) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1332) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1488) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1708) with 9 conditions (9 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1768) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:1780) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:179) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:795) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:811) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:819) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/predicates.md:827) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1152) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:1278) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:15357) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:15357) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sse.md:20069) with 30 conditions (30 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2662) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2689) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2785) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/sync.md:2810) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:167) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:460) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/i386/x86-tune-sched-bd.c:593) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/config/linux.c:30) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/convert.c:266) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:10531) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:10535) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:3041) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:3048) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:5572) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:5574) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:7118) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:7234) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:7242) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:818) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:861) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/call.c:9511) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/class.c:7344) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/class.c:7533) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/class.c:7543) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:2853) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:3178) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:339) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:4937) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:4981) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:5812) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constexpr.c:5945) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/constraint.cc:496) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cp-gimplify.c:1170) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cp-gimplify.c:2136) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cp-gimplify.c:768) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cp-tree.h:645) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cvt.c:133) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cvt.c:134) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cvt.c:276) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cvt.c:277) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cxx-pretty-print.c:1438) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cxx-pretty-print.c:2846) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/cxx-pretty-print.c:641) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:1204) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:1349) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:2521) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:397) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl2.c:5416) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:1134) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:13571) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:13714) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:14240) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:15561) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:15671) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:17392) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:2316) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:2463) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:2914) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:5668) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:6573) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:7137) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:8107) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:8983) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/decl.c:970) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/error.c:1464) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/error.c:3085) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/friend.c:332) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/g++spec.c:230) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/init.c:184) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/init.c:2593) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/init.c:3386) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/init.c:459) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/lambda.c:1271) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/lex.c:693) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/logic.cc:385) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/logic.cc:427) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/logic.cc:494) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/logic.cc:535) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/mangle.c:2848) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1299) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:1913) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:2060) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/method.c:3038) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/name-lookup.c:1023) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/name-lookup.c:2430) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/name-lookup.c:2641) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/name-lookup.c:6802) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/name-lookup.c:922) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:10707) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:11240) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:11722) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:13398) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:16131) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:17157) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:1729) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:20537) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:22443) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:22592) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:22955) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:24528) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:24640) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:26011) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:2719) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:2729) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:27787) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:28555) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:28577) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:28696) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:29720) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:30408) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:30443) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:30631) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:30773) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:31619) with 12 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:31975) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:33270) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:33277) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:37921) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:40639) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:42923) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/parser.c:7353) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:10451) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:12184) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:12872) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:19599) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:20240) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:20727) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:22523) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:27218) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:3455) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:5268) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:5818) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:5819) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:6004) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:7027) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:7069) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:9601) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/pt.c:9884) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cprop.c:1710) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/search.c:933) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:3773) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:4756) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:4822) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:4885) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:4953) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:5207) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:5239) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:5257) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:5598) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:5999) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/semantics.c:8083) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:1745) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:2220) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:2253) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:4392) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:5260) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:5388) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:5408) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/tree.c:686) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck2.c:1022) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck2.c:315) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck2.c:467) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:2511) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:3330) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:4450) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:4468) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:5989) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6362) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6387) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6478) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6539) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:6689) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:7730) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:8401) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:9286) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:9354) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/typeck.c:9698) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cp/type-utils.h:44) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:1972) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:3351) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:3633) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:5831) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:6125) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cse.c:6190) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:1448) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:1633) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:2003) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:465) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:881) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/cselib.c:901) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dbxout.c:1557) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-color.c:151) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-show-locus.c:1312) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-show-locus.c:700) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/diagnostic-show-locus.c:707) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dojump.c:1026) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2cfi.c:3190) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:14548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:14558) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:14570) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:16910) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:17131) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:18192) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:18392) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:19803) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:20851) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:21670) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:25347) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:25561) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:29752) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:30070) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:5410) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:6852) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:7125) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:7922) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/dwarf2out.c:8613) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/emit-rtl.c:6391) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/emit-rtl.c:6412) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/emit-rtl.c:938) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/emit-rtl.c:946) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/emit-rtl.c:976) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/explow.c:463) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/explow.c:683) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1633) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1635) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1683) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1689) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1715) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:1744) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:2462) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:2462) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:6246) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expmed.c:757) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:10232) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:11221) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:11515) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:12242) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:2307) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:251) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:281) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:3760) with 10 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:429) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:429) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:431) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:6818) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:6835) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:7136) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:7280) with 7 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:729) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:7697) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:8538) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/expr.c:9919) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:1055) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:1431) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:1758) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:2318) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:2356) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:3325) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:3333) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:3743) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/final.c:3886) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:1022) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:1025) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:1039) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:1098) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:1112) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:126) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:136) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:145) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:159) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:182) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:240) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:328) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:403) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:518) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:630) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:682) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:69) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:782) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:786) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:790) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:794) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:823) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:828) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:886) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:889) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:890) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:896) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:937) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:940) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:95) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fixed-value.c:977) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:13260) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:13731) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:15076) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:1848) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:1913) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2100) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2105) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2117) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2279) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2281) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2435) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:2476) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:3933) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:412) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:434) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:4381) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:457) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:4636) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:5207) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:5717) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:6216) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:6227) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:6631) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:6977) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:800) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8140) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8376) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8382) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8391) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8484) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:8607) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:9146) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const.c:9760) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const-call.c:662) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const-call.c:672) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fold-const-call.c:673) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/arith.c:1565) with 11 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:1467) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:324) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:326) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:3371) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:413) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:415) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:4560) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/check.c:7425) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/convert.c:103) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/cpp.c:596) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:10269) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:1061) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:4052) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:5369) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:6061) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:6073) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/decl.c:6155) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dump-parse-tree.c:1205) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dump-parse-tree.c:1811) with 8 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dump-parse-tree.c:3182) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/dump-parse-tree.c:3485) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/expr.c:1896) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/expr.c:2135) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/expr.c:4869) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/frontend-passes.c:406) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1025) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1058) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:1058) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:2100) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/interface.c:4056) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/intrinsic.c:4881) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/intrinsic.c:953) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/io.c:455) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/iresolve.c:2569) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:173) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:214) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2184) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2862) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2890) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/match.c:2999) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/module.c:1018) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/module.c:1040) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/module.c:3501) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/module.c:4474) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/module.c:5250) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/openmp.c:588) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:1376) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:1782) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:338) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:4213) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/parse.c:4377) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/primary.c:1155) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/primary.c:3833) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:11028) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:1551) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:15839) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:1687) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:2763) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:3969) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:4155) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:547) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:7750) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:7942) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/resolve.c:9326) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1038) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1553) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:1801) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:2180) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:2376) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:950) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/scanner.c:979) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/simplify.c:4151) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/simplify.c:6848) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/simplify.c:7591) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/simplify.c:7673) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/symbol.c:1765) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/symbol.c:3710) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/symbol.c:5214) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-array.c:5003) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans.c:343) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans.c:415) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:2170) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:5192) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:5414) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:5859) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:888) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:895) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-decl.c:912) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-expr.c:6304) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-expr.c:9612) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:4532) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:7234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:7795) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:9183) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:9457) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-intrinsic.c:9501) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-io.c:2410) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-stmt.c:1734) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-stmt.c:6244) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-types.c:3238) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-types.c:567) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-types.c:614) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fortran/trans-types.c:821) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:1972) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:2226) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:2246) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:382) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/function.c:4945) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fwprop.c:373) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/fwprop.c:694) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:10073) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:1403) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:3116) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:3340) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:3348) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:5591) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:5943) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:5965) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:6211) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:6568) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8511) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8587) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8683) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8734) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8746) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8827) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcc.c:8847) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gcse.c:1367) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genattrtab.c:1203) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genattrtab.c:2663) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:2573) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:4586) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:6853) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:8861) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genautomata.c:951) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genextract.c:289) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genflags.c:61) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengenrtl.c:256) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:1107) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:1107) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:2491) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:2491) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:3299) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:3299) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:3317) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.c:3317) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gengtype.h:344) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:1702) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:1772) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:2054) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:2918) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:3192) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:4265) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmatch.c:4413) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genmodes.c:1497) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genoutput.c:763) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genpeep.c:250) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genpreds.c:794) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genrecog.c:746) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genrecog.c:751) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/genrecog.c:760) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:1634) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:1674) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:1975) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:3090) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:3256) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:3260) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:3265) with 8 conditions (8 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gensupport.c:829) with 7 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.c:1627) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.c:1674) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.c:1796) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.c:388) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:96) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:96) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:96) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:96) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-expr.h:96) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-fold.c:318) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-fold.c:367) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-fold.c:4052) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-fold.c:885) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-fold.c:886) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:2823) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple.h:6549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-loop-interchange.cc:517) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-loop-versioning.cc:1234) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-match-head.c:976) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-pretty-print.c:386) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-pretty-print.c:607) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-pretty-print.c:672) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-backprop.c:444) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-evrp-analyze.c:112) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-evrp-analyze.c:168) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:238) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:480) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:511) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-isolate-paths.c:82) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-split-paths.c:134) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:1349) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:1391) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:2371) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:3713) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:3746) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-sprintf.c:955) with 8 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-store-merging.c:3615) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-store-merging.c:3645) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-strength-reduction.c:1535) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-strength-reduction.c:1536) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-strength-reduction.c:1759) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-ssa-strength-reduction.c:2137) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-streamer-in.c:216) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimple-walk.c:710) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:10164) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:12783) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:12918) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:14479) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:2665) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:3597) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:4129) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:6456) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:869) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:8829) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:8837) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:9133) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/gimplify.c:9253) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:1196) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:1209) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:1307) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:140) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:826) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:847) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/godump.c:975) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-brig.c:559) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-brig.c:965) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-common.h:958) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-common.h:958) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-dump.c:807) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:1905) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:3066) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:3106) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:3622) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:3798) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/hsa-gen.c:924) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ifcvt.c:1700) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ifcvt.c:237) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/internal-fn.c:3603) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/internal-fn.c:529) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/internal-fn.c:555) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-cp.c:1372) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-cp.c:1987) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-devirt.c:1241) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-devirt.c:396) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-fnsummary.c:1158) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-fnsummary.c:1237) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-fnsummary.c:2337) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-icf-gimple.c:150) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-param-manipulation.c:1389) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-param-manipulation.c:1537) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:1700) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:2191) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:2273) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:315) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:5548) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-prop.c:5663) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-split.c:374) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-split.c:668) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-sra.c:1651) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-sra.c:816) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ipa-utils.c:367) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira-build.c:1839) with 8 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira.c:1939) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ira-costs.c:1154) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/is-a.h:224) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:709) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:720) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:730) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:756) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:899) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/jump.c:901) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/loop-invariant.c:329) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/loop-invariant.c:397) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/loop-iv.c:1139) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lower-subreg.c:1258) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lower-subreg.c:495) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lower-subreg.c:680) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra.c:2272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-constraints.c:1790) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-constraints.c:4104) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-constraints.c:4212) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-eliminations.c:759) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lra-remat.c:265) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-cgraph.c:1505) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-cgraph.c:1758) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto.c:491) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:1172) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:1403) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:1655) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-common.c:302) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-lang.c:978) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-symtab.c:1007) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-symtab.c:445) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto/lto-symtab.c:464) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-in.c:1456) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-in.c:1492) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-out.c:1075) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-streamer-out.c:1728) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/lto-wrapper.c:424) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/mcf.c:151) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/mode-switching.c:350) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:1823) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:1915) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:2761) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:2778) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:5631) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:6108) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:6534) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-expand.c:8900) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-grid.c:620) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:12923) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:1708) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:2832) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:2865) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:2913) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:415) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:621) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:8624) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-low.c:9515) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-simd-clone.c:1478) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-simd-clone.c:1523) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/omp-simd-clone.c:843) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1098) with 7 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1109) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1339) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:1444) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:2783) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:3098) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:6182) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:7299) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs.c:7308) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-libfuncs.c:307) with 8 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-libfuncs.c:322) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-libfuncs.c:335) with 8 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-libfuncs.c:348) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-libfuncs.c:361) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.c:572) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.c:704) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opt-problem.cc:275) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opts.c:168) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opts-common.c:1361) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opts-common.c:1685) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/opts-common.c:384) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/postreload.c:1421) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/postreload.c:2145) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/postreload.c:2148) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/postreload.c:497) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/predict.c:1616) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/predict.c:2341) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/predict.c:2373) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/predict.c:2933) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/predict.c:4226) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/print-rtl.c:1807) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/print-rtl.c:511) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/print-tree.c:689) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/profile-count.c:159) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:272) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:605) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:605) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:636) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-md.c:636) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-rtl.c:1879) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-rtl.c:1889) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/read-rtl-function.c:1400) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/real.c:5019) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/real.c:5052) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/recog.c:1870) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/recog.c:2043) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ree.c:1168) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regcprop.c:554) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reginfo.c:1065) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reginfo.c:368) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/regrename.c:1311) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reg-stack.c:1567) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:1221) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:1359) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:1449) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:1574) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:3020) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:5565) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:5625) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:6616) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:8460) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:8523) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload1.c:8775) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:1228) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:2133) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:2863) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:3100) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:328) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:4290) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:4299) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:4339) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:4659) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:5550) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:6536) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:6937) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/reload.c:7094) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/resource.c:1010) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/resource.c:1044) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/resource.c:286) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/resource.c:459) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/resource.c:464) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:149) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:149) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:149) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:1726) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:1915) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:2150) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:3524) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:5935) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:5953) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:6242) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:6253) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtlanal.c:6270) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:883) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:895) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:895) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:895) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/rtl.h:895) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sanopt.c:516) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-deps.c:2943) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-deps.c:4584) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-rgn.c:1801) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sched-rgn.c:1826) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/sel-sched.c:2456) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:1271) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:1313) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:1684) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:1748) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2234) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2271) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2373) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2387) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2666) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:2863) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:3026) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:3260) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:4082) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:4088) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:4209) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:4255) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5022) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5464) with 6 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5542) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5657) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5796) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5805) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5807) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5828) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5830) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5832) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:5958) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:6468) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:6753) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:6771) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:7222) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/simplify-rtx.c:7592) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/stor-layout.c:1214) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/stor-layout.c:439) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/stor-layout.c:466) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/targhooks.c:1320) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/targhooks.c:416) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/toplev.c:1576) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/toplev.c:2186) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:1419) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:375) with 10 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:421) with 10 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/trans-mem.c:588) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10008) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10031) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10045) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10788) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:10901) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:11174) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:11647) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:1168) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:13450) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:13781) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:13921) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:14695) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:14720) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:4278) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:4291) with 5 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:4483) with 8 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:5082) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:5733) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:5794) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:7064) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:7443) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:7445) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:9963) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.c:9994) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:3067) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:3212) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:3683) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:3687) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:5107) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:5235) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfg.c:6746) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-cfgcleanup.c:249) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-chrec.c:948) with 8 conditions (7 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-data-ref.c:5536) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-data-ref.c:713) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-dump.c:334) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-dump.c:517) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-eh.c:2763) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4907) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4907) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4907) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4907) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4948) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:4948) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5108) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree.h:5293) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-if-conv.c:1465) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-if-conv.c:956) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:1072) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:1083) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:1268) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:1272) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:1750) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:5411) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:5427) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-inline.c:5548) with 6 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-nested.c:1001) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-nested.c:1732) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-nested.c:270) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-nested.c:2982) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-object-size.c:264) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-pretty-print.c:2252) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-scalar-evolution.c:3586) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-sra.c:1093) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-sra.c:1291) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-address.c:1058) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:1625) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:1642) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:2095) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:2610) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:3033) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:3034) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:371) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-alias.c:383) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa.c:1002) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa.c:1259) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa.c:1527) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-ccp.c:1790) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-ccp.c:2647) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-ccp.c:278) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-ccp.c:2955) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dce.c:822) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dce.c:884) with 13 conditions (13 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dom.c:1924) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-dse.c:997) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1211) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1565) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1566) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1635) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1664) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1693) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1709) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1739) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:1920) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:2363) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:2735) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:554) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-forwprop.c:703) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-live.c:352) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-ch.c:458) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-im.c:1174) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-im.c:1255) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-ivopts.c:3314) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-ivopts.c:3958) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-ivopts.c:4297) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-ivopts.c:829) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-manip.c:1024) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-niter.c:2115) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-niter.c:3534) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-niter.c:3552) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-loop-niter.c:4651) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-math-opts.c:925) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-math-opts.c:942) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-math-opts.c:953) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssanames.c:557) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-operands.c:870) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-phiopt.c:1326) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-phiopt.c:1908) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-phiopt.c:1935) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-phiopt.c:486) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-pre.c:3127) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-propagate.c:1327) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-propagate.c:1436) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:1983) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:3482) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:4443) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:482) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:5582) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-reassoc.c:948) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:4290) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:4297) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:4326) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:5376) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:5471) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:5562) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:6620) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-sccvn.c:968) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-scopedtables.c:1123) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-scopedtables.c:1138) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-scopedtables.c:1145) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-scopedtables.c:402) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-scopedtables.c:594) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-structalias.c:3433) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-structalias.c:4420) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-structalias.c:6526) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-structalias.c:6617) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadbackward.c:751) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadbackward.c:84) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadedge.c:1096) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadedge.c:445) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-ssa-threadedge.c:504) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-streamer-in.c:151) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-streamer-in.c:245) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-streamer-out.c:122) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-streamer-out.c:207) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-tailcall.c:305) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-tailcall.c:332) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-tailcall.c:443) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-tailcall.c:648) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-data-refs.c:135) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-data-refs.c:4138) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-data-refs.c:4762) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-data-refs.c:5092) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-data-refs.c:5716) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1053) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1060) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1540) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1581) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1713) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1795) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:1961) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-generic.c:365) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-loop.c:2528) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-loop.c:3873) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-patterns.c:2087) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-patterns.c:2221) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-patterns.c:3940) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-patterns.c:4060) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-slp.c:3315) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-slp.c:3594) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-slp.c:3603) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:11299) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:11645) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:12041) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:1607) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5309) with 4 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5365) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:5399) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:6046) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:6508) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:6517) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:6518) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:9810) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:9825) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vect-stmts.c:9836) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:1655) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:1728) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:1730) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:1882) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:1897) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2008) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2044) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2121) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2144) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2158) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:2428) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:4059) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:430) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:4338) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:4349) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/tree-vrp.c:549) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ubsan.c:1377) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ubsan.c:1449) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/ubsan.c:2159) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/valtrack.c:129) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/value-range.cc:280) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:2418) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:6648) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:7093) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/varasm.c:7108) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:5277) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:5471) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:5509) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:6282) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:6433) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:7645) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:7649) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:798) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:9588) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/var-tracking.c:9847) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:123) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1642) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:1864) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:2038) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:213) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:2236) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:3085) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:3567) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4225) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4277) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4291) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4298) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4307) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4313) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:4319) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:548) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vr-values.c:797) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../gcc/vtable-verify.c:581) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:10176) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:10341) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:10872) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:10872) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:10950) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:11033) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:11651) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:12575) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:12830) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:12995) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:12995) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:1300) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:1300) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13532) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13619) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13633) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:13700) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:14286) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:14665) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:14729) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:15755) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:163) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:16450) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:16742) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:16762) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:16762) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:179) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2086) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2132) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21498) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21520) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21542) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2155) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21564) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21602) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:21624) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2167) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2227) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:2446) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:3361) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:3375) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:3444) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4142) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4261) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4350) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4382) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4409) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46003) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46025) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46047) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46069) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46107) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:46129) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48643) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48665) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48687) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48709) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48747) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:48769) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4914) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:4956) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5261) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5657) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5657) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:569) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:57046) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:57331) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5827) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5876) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5899) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5911) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:5998) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6339) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6443) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6443) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:64585) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:64768) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6540) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:6608) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7051) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7101) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7140) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7465) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7757) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7757) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:7986) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:8616) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:8616) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:8690) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:8905) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:8905) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:9003) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at generic-match.c:9261) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:10029) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:10314) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:111641) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:111814) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:11311) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:11463) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:12025) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:12104) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:12630) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:12820) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:13840) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14091) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14242) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14242) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14872) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14872) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:14940) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15025) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15039) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15100) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:15925) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:16011) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:1636) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:1636) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:16429) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:16510) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:165) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:19245) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:20058) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:20516) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:20543) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:20543) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:217) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2488) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2537) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2565) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2577) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2632) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2698) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:2952) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:3993) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:4007) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:4068) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:40946) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:40965) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:40984) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:41003) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:41052) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:41071) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:4748) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:4885) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5051) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5189) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5230) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5552) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5836) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:5836) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6061) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6110) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6138) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6150) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6230) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6765) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6925) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:6925) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:695) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7065) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7117) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7385) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74680) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7468) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74699) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74718) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74737) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74786) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:74805) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7505) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78233) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78252) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78271) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78290) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78339) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:78358) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:7878) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:8204) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:8204) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:8484) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:85573) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:86008) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:92316) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:92705) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:92857) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:92977) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93097) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93217) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93337) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93457) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93577) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93697) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93817) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:93937) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94057) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94177) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94297) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94417) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94537) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94657) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94777) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:94897) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:95017) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:95137) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:95257) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:95377) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:9546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:9546) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:9621) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:9907) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gimple-match.c:9907) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gtype-desc.c:328) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at gtype-desc.c:3931) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-attrtab.c:82) with 22 conditions (22 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:2693) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:2807) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:3179) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:3206) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:597) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at insn-dfatab.c:666) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/charset.c:1639) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/charset.c:1639) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/expr.c:1782) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/expr.c:1782) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/expr.c:373) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/expr.c:373) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/expr.c:393) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/expr.c:393) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/expr.c:413) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/expr.c:413) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/expr.c:433) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/expr.c:433) with 5 conditions (5 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:1993) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:1993) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:2254) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:2254) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:2468) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:2468) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:2482) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:2482) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:3082) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:3082) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:3477) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:3477) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/lex.c:3800) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/lex.c:3800) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:1062) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:1062) with 6 conditions (6 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:1547) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:1547) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:2605) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:2605) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:2627) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:2627) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:2964) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:2964) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/macro.c:702) with 11 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/macro.c:702) with 11 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/traditional.c:487) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/traditional.c:487) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../../libcpp/traditional.c:732) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libcpp/traditional.c:732) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decContext.c:357) with 14 conditions (14 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decNumber.c:2472) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decNumber.c:2630) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decNumber.c:2685) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decNumber.c:3322) with 10 conditions (10 BBs) transformed into a switch statement.
Condition chain (at ../../libdecnumber/decNumber.c:6089) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/argv.c:315) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/argv.c:315) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:1771) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:1771) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2306) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2306) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2741) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2741) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2914) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:2914) with 5 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:3274) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:3274) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:3295) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/cp-demangle.c:3295) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/d-demangle.c:939) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/d-demangle.c:939) with 4 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/rust-demangle.c:197) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ../../libiberty/rust-demangle.c:197) with 4 conditions (4 BBs) transformed into a switch statement.
Condition chain (at ./tm-preds.h:304) with 3 conditions (3 BBs) transformed into a switch statement.
Condition chain (at ../../zlib/deflate.c:1008) with 3 conditions (2 BBs) transformed into a switch statement.
Condition chain (at ../../zlib/gzread.c:195) with 4 conditions (3 BBs) transformed into a switch statement.
Martin Liška Sept. 1, 2020, 11:47 a.m. UTC | #12
Hello.

There's a new version of the patch attempt. I mentioned couple of issues with the v1 here:
https://gcc.gnu.org/pipermail/gcc-patches/2020-March/542821.html

The patch addresses the biggest blocker which fact that the optimization was done unconditionally.
Now the transformation happens only when a bit test or (and) a jump table can be created.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests. I'm also sending list
of if-chains that are transformed in GCC.

Thoughts?
Thanks,
Martin
build-x86_64-pc-linux-gnu/libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:371) with 5 conditions (5 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:391) with 5 conditions (5 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:411) with 5 conditions (5 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:431) with 5 conditions (5 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/init.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/init.c:553) with 8 conditions (8 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:1856) with 27 conditions (14 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:3512) with 3 conditions (2 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4147) with 3 conditions (2 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4185) with 4 conditions (2 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/macro.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:1164) with 6 conditions (6 BBs) transformed into a switch statement.
build-x86_64-pc-linux-gnu/libcpp/traditional.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/traditional.c:492) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/alias.c:2923) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/alias.c:2925) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/asan.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/asan.h:168) with 12 conditions (9 BBs) transformed into a switch statement.
gcc/attribs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/attribs.c:729) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/build/genautomata.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/genautomata.c:951) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/build/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:1107) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/build/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:2491) with 5 conditions (4 BBs) transformed into a switch statement.
gcc/build/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.h:344) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/build/genmatch.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/build/genmatch.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/build/genmatch.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/is-a.h:224) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/build/genoutput.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/genoutput.c:763) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/build/genpeep.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/genpeep.c:250) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/build/genpreds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/genpreds.c:794) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/build/gensupport.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gensupport.c:1634) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/build/gensupport.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gensupport.c:1674) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/build/gensupport.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gensupport.c:3260) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/build/read-md.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
gcc/build/read-rtl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/read-rtl.c:1889) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/builtins.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/asan.h:168) with 12 conditions (9 BBs) transformed into a switch statement.
gcc/builtins.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10564) with 10 conditions (10 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10621) with 11 conditions (11 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10682) with 9 conditions (9 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10734) with 9 conditions (9 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10785) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:10831) with 12 conditions (12 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:12065) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/c/c-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-decl.c:7511) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/c/c-parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-parser.c:384) with 8 conditions (4 BBs) transformed into a switch statement.
gcc/c/c-typeck.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-typeck.c:2830) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/c/c-typeck.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c/c-typeck.c:8031) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/c-family/c-ada-spec.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-ada-spec.c:468) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/c-family/c-attribs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-attribs.c:1827) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/c-family/c-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-common.c:2872) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/c-family/c-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-common.c:6179) with 10 conditions (10 BBs) transformed into a switch statement.
gcc/c-family/c-format.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-format.c:2447) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/c-family/c-lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-lex.c:545) with 8 conditions (7 BBs) transformed into a switch statement.
gcc/c-family/c-omp.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-omp.c:2022) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/c-family/c-warn.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:1796) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/c-family/c-warn.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/c-family/c-warn.c:2950) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cfgexpand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgexpand.c:224) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/cfgexpand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgexpand.c:4992) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cfgexpand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cfgexpand.c:6145) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/cgraph.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:11875) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:11890) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:11895) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6695) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6712) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:6750) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/combine.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/combine.c:9398) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/cp/call.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/call.c:10611) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/cp-gimplify.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/cp-gimplify.c:1240) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cp/cp-gimplify.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/cp/decl2.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl2.c:1356) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/cp/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/decl.c:2495) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/cp/error.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/error.c:3089) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/cp/init.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/init.c:2608) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/lex.c:695) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:10890) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:11901) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:20818) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:22477) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:22896) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:24874) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:26353) with 6 conditions (5 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:29085) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:30973) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:31823) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:32669) with 12 conditions (7 BBs) transformed into a switch statement.
gcc/cp/parser.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/parser.c:7488) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/cp/pt.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/pt.c:20116) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/cp/pt.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/type-utils.h:44) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/cp/semantics.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/semantics.c:5663) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/cp/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cp/tree.c:5388) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/cselib.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:1004) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cselib.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:1358) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/cselib.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:1398) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cselib.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:878) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/cselib.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cselib.c:974) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/diagnostic-show-locus.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/diagnostic-show-locus.c:823) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/diagnostic-show-locus.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/diagnostic-show-locus.c:830) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:14551) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:14561) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:14573) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:16918) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:20725) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:21545) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:29651) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:5412) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:7127) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:7924) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/dwarf2out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/dwarf2out.c:8615) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/emit-rtl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:6359) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/emit-rtl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/emit-rtl.c:6380) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/expmed.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/expmed.c:1708) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/expmed.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/expmed.c:6272) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/final.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/final.c:3325) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1022) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1025) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1039) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1098) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:1112) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:145) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:148) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:159) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:182) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:240) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:328) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:403) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:518) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:630) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:682) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:69) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:782) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:786) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:790) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:794) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:823) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:828) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:886) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:889) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:890) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:896) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:937) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:940) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fixed-value.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fixed-value.c:977) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:10330) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:1848) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:2100) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:2105) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:2117) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:8332) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:8719) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/fold-const.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fold-const.c:9063) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/check.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/check.c:329) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/check.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/check.c:418) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:10381) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:4139) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:5457) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:6166) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/decl.c:6178) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/dump-parse-tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/dump-parse-tree.c:1891) with 8 conditions (7 BBs) transformed into a switch statement.
gcc/fortran/dump-parse-tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/dump-parse-tree.c:3262) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/fortran/interface.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/interface.c:4091) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/intrinsic.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/intrinsic.c:4932) with 6 conditions (5 BBs) transformed into a switch statement.
gcc/fortran/match.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/match.c:173) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/match.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/match.c:214) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/match.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/match.c:2934) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/fortran/match.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/match.c:3043) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/module.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/module.c:1020) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/module.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/module.c:1042) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/module.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/module.c:3601) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/module.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/module.c:4574) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/module.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/module.c:5355) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/parse.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/parse.c:1819) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/parse.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/parse.c:338) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/primary.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/primary.c:1155) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/primary.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/primary.c:3892) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:1551) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:1687) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:2788) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:547) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:7869) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/resolve.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/resolve.c:8061) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:1038) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:1553) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:1805) with 5 conditions (4 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:2215) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:950) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/scanner.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/scanner.c:979) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/symbol.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/symbol.c:1766) with 7 conditions (5 BBs) transformed into a switch statement.
gcc/fortran/symbol.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/symbol.c:3703) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/symbol.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/symbol.c:5219) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/trans.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans.c:355) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/fortran/trans-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans-decl.c:5259) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/trans-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans-decl.c:889) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/trans-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans-decl.c:896) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/trans-decl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans-decl.c:913) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/fortran/trans-io.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fortran/trans-io.c:2410) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/fwprop.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/fwprop.c:373) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:3204) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:3428) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:3436) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:6156) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:6508) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:6530) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:9352) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:9364) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:9445) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/gcc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gcc.c:9465) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/generic-match.c.043t.iftoswitch:Condition chain (at generic-match.c:4798) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/generic-match.c.043t.iftoswitch:Condition chain (at generic-match.c:8807) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:1107) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.c:2491) with 5 conditions (4 BBs) transformed into a switch statement.
gcc/gengtype.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gengtype.h:344) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/gimple.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.c:1613) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/gimple-expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/gimple-fold.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-fold.c:900) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/gimple-fold.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-fold.c:901) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/gimple-match.c.043t.iftoswitch:Condition chain (at gimple-match.c:5041) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/gimple-match.c.043t.iftoswitch:Condition chain (at gimple-match.c:9498) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/gimple-ssa-isolate-paths.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-ssa-isolate-paths.c:480) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gimple-ssa-split-paths.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-ssa-split-paths.c:141) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/gimple-ssa-strength-reduction.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-ssa-strength-reduction.c:2137) with 7 conditions (4 BBs) transformed into a switch statement.
gcc/gimple-ssa-warn-alloca.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/gimplify.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/gimplify.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimplify.c:6471) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:13140) with 6 conditions (3 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:16393) with 24 conditions (24 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:16405) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:1858) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19001) with 12 conditions (10 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19010) with 8 conditions (4 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19016) with 16 conditions (16 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19040) with 8 conditions (8 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19198) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19199) with 6 conditions (5 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19628) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:19644) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:20961) with 6 conditions (5 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:20963) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:2622) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:2884) with 14 conditions (14 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:3328) with 22 conditions (22 BBs) transformed into a switch statement.
gcc/i386.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.c:9860) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:16909) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:19452) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:2706) with 9 conditions (5 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:380) with 22 conditions (22 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:401) with 22 conditions (22 BBs) transformed into a switch statement.
gcc/i386-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386-expand.c:4573) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/ifcvt.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ifcvt.c:237) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:1113) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:14363) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:1551) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:1906) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19163) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:19390) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2295) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2976) with 13 conditions (10 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:4524) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:4559) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:503) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:557) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:5893) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:5992) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:872) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:910) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:922) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:20700) with 31 conditions (31 BBs) transformed into a switch statement.
gcc/insn-attrtab.c.043t.iftoswitch:Condition chain (at insn-attrtab.c:82) with 22 conditions (22 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:15509) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16158) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16158) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16171) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16171) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16391) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:20649) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2453) with 14 conditions (8 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:26034) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-dfatab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3326) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:15656) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16860) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16860) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16913) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:16913) with 7 conditions (7 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:17089) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:20655) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:2398) with 14 conditions (8 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:25945) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-latencytab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/i386.md:3307) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1067) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-output.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/sse.md:1185) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1292) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1313) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1353) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1737) with 9 conditions (9 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:1809) with 10 conditions (10 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:818) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:842) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/insn-preds.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/config/i386/predicates.md:850) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ipa.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-fnsummary.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-fnsummary.c:1248) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-icf-gimple.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:151) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-inline-analysis.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-inline-transform.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-param-manipulation.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/ipa-utils.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ipa-utils.c:367) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/ipa-visibility.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ira-build.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ira-build.c:1839) with 8 conditions (6 BBs) transformed into a switch statement.
gcc/jump.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/jump.c:709) with 5 conditions (3 BBs) transformed into a switch statement.
gcc/jump.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/jump.c:720) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/jump.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/jump.c:730) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/loop-invariant.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/loop-invariant.c:329) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/loop-invariant.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/loop-invariant.c:397) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/lra-constraints.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lra-constraints.c:4167) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/lra-constraints.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lra-constraints.c:4275) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/lto/lto-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lto/lto-common.c:1196) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/lto/lto-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lto/lto-common.c:1411) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/lto/lto-partition.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/lto-streamer-in.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-in.c:1535) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/lto-streamer-out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/lto-streamer-out.c:1216) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:1828) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:1920) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:1934) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:3809) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:3826) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:6689) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/omp-expand.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-expand.c:7179) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/omp-low.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-low.c:12888) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/omp-low.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/omp-low.c:637) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/optabs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs.c:1339) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/optabs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/optabs-libfuncs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-libfuncs.c:322) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/optabs-libfuncs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-libfuncs.c:348) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/optabs-libfuncs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-libfuncs.c:361) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/optabs-libfuncs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/optabs-query.h:89) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/opts-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/opts-common.c:1720) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/opts-common.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/opts-common.c:384) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/predict.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/print-rtl.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/print-rtl.c:512) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/read-md.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/read-md.c:467) with 6 conditions (3 BBs) transformed into a switch statement.
gcc/read-rtl-function.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/read-rtl-function.c:1400) with 10 conditions (10 BBs) transformed into a switch statement.
gcc/recog.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/recog.c:1853) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/reg-stack.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reg-stack.c:1567) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:1448) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:1573) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:5565) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:5625) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:6616) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/reload1.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload1.c:8460) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/reload.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload.c:1228) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/reload.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/reload.c:6536) with 6 conditions (5 BBs) transformed into a switch statement.
gcc/rtlanal.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/rtlanal.c:1732) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/rtlanal.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/rtlanal.c:3475) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/rtlanal.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/rtlanal.c:5899) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/sanopt.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/sanopt.c:520) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/symtab.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/toplev.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/toplev.c:2221) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/trans-mem.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/trans-mem.c:375) with 10 conditions (5 BBs) transformed into a switch statement.
gcc/trans-mem.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/trans-mem.c:421) with 10 conditions (5 BBs) transformed into a switch statement.
gcc/trans-mem.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/trans-mem.c:588) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:10819) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:4265) with 5 conditions (4 BBs) transformed into a switch statement.
gcc/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:4278) with 5 conditions (4 BBs) transformed into a switch statement.
gcc/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:5069) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree.c:5737) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/tree-cfg.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-cfg.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-cfg.c:5281) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-cfg.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-cfg.c:6792) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-chrec.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-chrec.c:948) with 8 conditions (7 BBs) transformed into a switch statement.
gcc/tree-data-ref.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-data-ref.c:714) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-nested.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-nested.c:1767) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-nested.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-nested.c:3027) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-nested.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-nested.c:999) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-address.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-address.c:1038) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-alias.c:3154) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-ssa-alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-alias.c:3155) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-ssa-alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-alias.c:371) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-alias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-alias.c:383) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa.c:1002) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-dce.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-dce.c:960) with 13 conditions (13 BBs) transformed into a switch statement.
gcc/tree-ssa-forwprop.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-loop-ivopts.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-ssa-loop-ivopts.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-loop-ivopts.c:4322) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/tree-ssa-phiopt.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-propagate.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple-expr.h:87) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-ssa-reassoc.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-strlen.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-structalias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-structalias.c:6533) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-structalias.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-structalias.c:6624) with 6 conditions (6 BBs) transformed into a switch statement.
gcc/tree-ssa-threadbackward.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-threadbackward.c:84) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-ssa-threadedge.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-ssa-threadedge.c:1096) with 3 conditions (3 BBs) transformed into a switch statement.
gcc/tree-stdarg.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-streamer-in.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-streamer-in.c:272) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-streamer-out.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-streamer-out.c:235) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/tree-tailcall.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-tailcall.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-tailcall.c:444) with 4 conditions (4 BBs) transformed into a switch statement.
gcc/tree-vect-data-refs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-vect-data-refs.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-data-refs.c:135) with 5 conditions (5 BBs) transformed into a switch statement.
gcc/tree-vect-generic.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/tree-vect-generic.c:1619) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/tree-vect-patterns.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-vect-stmts.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/tree-vrp.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/ubsan.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/gimple.h:2877) with 4 conditions (2 BBs) transformed into a switch statement.
gcc/ubsan.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ubsan.c:1452) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/ubsan.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/ubsan.c:2162) with 4 conditions (3 BBs) transformed into a switch statement.
gcc/varpool.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/cgraph.h:2791) with 3 conditions (2 BBs) transformed into a switch statement.
gcc/vr-values.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/gcc/vr-values.c:2232) with 3 conditions (2 BBs) transformed into a switch statement.
libbacktrace/dwarf.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libbacktrace/dwarf.c:3218) with 3 conditions (2 BBs) transformed into a switch statement.
libbacktrace/.libs/dwarf.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libbacktrace/dwarf.c:3218) with 3 conditions (2 BBs) transformed into a switch statement.
libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:371) with 5 conditions (5 BBs) transformed into a switch statement.
libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:391) with 5 conditions (5 BBs) transformed into a switch statement.
libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:411) with 5 conditions (5 BBs) transformed into a switch statement.
libcpp/expr.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/expr.c:431) with 5 conditions (5 BBs) transformed into a switch statement.
libcpp/init.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/init.c:553) with 8 conditions (8 BBs) transformed into a switch statement.
libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:1856) with 27 conditions (14 BBs) transformed into a switch statement.
libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:3512) with 3 conditions (2 BBs) transformed into a switch statement.
libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4147) with 3 conditions (2 BBs) transformed into a switch statement.
libcpp/lex.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/lex.c:4185) with 4 conditions (2 BBs) transformed into a switch statement.
libcpp/macro.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/macro.c:1164) with 6 conditions (6 BBs) transformed into a switch statement.
libcpp/traditional.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libcpp/traditional.c:492) with 3 conditions (3 BBs) transformed into a switch statement.
libdecnumber/decContext.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libdecnumber/decContext.c:357) with 14 conditions (14 BBs) transformed into a switch statement.
libdecnumber/decNumber.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libdecnumber/decNumber.c:3322) with 10 conditions (10 BBs) transformed into a switch statement.
libiberty/argv.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/argv.c:315) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:1776) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:4699) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:6356) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/pic/argv.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/argv.c:315) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/pic/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:1776) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/pic/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:4699) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/pic/cp-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/cp-demangle.c:6356) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/pic/rust-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/rust-demangle.c:368) with 3 conditions (2 BBs) transformed into a switch statement.
libiberty/rust-demangle.c.043t.iftoswitch:Condition chain (at /home/marxin/Programming/gcc2/libiberty/rust-demangle.c:368) with 3 conditions (2 BBs) transformed into a switch statement.
David Malcolm Sept. 1, 2020, 2:50 p.m. UTC | #13
On Tue, 2020-09-01 at 13:47 +0200, Martin Liška wrote:
> Hello.
> 
> There's a new version of the patch attempt. I mentioned couple of
> issues with the v1 here:
> https://gcc.gnu.org/pipermail/gcc-patches/2020-March/542821.html
> 
> The patch addresses the biggest blocker which fact that the
> optimization was done unconditionally.
> Now the transformation happens only when a bit test or (and) a jump
> table can be created.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression
> tests. I'm also sending list
> of if-chains that are transformed in GCC.
> 
> Thoughts?
> Thanks,
> Martin

Hopefully someone with deeper knowledge of gimple optimizations can
review the patch properly, but here are a few nits I spotted (sorry):

> gcc/ChangeLog:

The older version of the patch had:
        PR tree-optimization/14799
        PR ipa/88702
in both ChangeLog entries.  Should this version?

> 	* Makefile.in: Add new gimple-if-to-switch.o.
> 	* common.opt: Add new option.
> 	* dbgcnt.def (DEBUG_COUNTER): Add new debug counter.
> 	* doc/invoke.texi:

Presumably "Document -fconvert-if-to-switch." or somesuch.

> 	* opts.c:

Presumably: "Add -fconvert-if-to-switch at OPT_LEVELS_2_PLUS." or
somesuch.

> 	* passes.def: Register new pass.
> 	* timevar.def (TV_TREE_IF_TO_SWITCH): Add new time variable.
> 	* tree-pass.h (make_pass_if_to_switch): New.
> 	* tree-switch-conversion.h: New file.
> 	* gimple-if-to-switch.c: New file.

I believe new C++ source files should have a ".cc" suffix.

> gcc/testsuite/ChangeLog:

(as above re bugzilla entries)

> 	* gcc.dg/tree-ssa/reassoc-32.c:

Presumably: "Add -fno-convert-if-to-switch."

> 	* 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.


Hope this is constructive
Dave
Martin Liška Sept. 2, 2020, 11:53 a.m. UTC | #14
On 9/1/20 4:50 PM, David Malcolm wrote:
> Hope this is constructive
> Dave

Thank you David. All of them very very useful!

There's updated version of the patch.
Martin
Martin Liška Sept. 21, 2020, 8:55 a.m. UTC | #15
PING^1

On 9/2/20 1:53 PM, Martin Liška wrote:
> On 9/1/20 4:50 PM, David Malcolm wrote:
>> Hope this is constructive
>> Dave
> 
> Thank you David. All of them very very useful!
> 
> There's updated version of the patch.
> Martin
Richard Biener Sept. 24, 2020, 12:41 p.m. UTC | #16
On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 9/1/20 4:50 PM, David Malcolm wrote:
> > Hope this is constructive
> > Dave
>
> Thank you David. All of them very very useful!
>
> There's updated version of the patch.

I noticed several functions without a function-level comment.

-  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);

I thought we generally leave this to the compiler ...

+@item -fconvert-if-to-switch
+@opindex fconvert-if-to-switch
+Perform conversion of an if cascade into a switch statement.
+Do so if the switch can be later transformed using a jump table
+or a bit test.  The transformation can help to produce faster code for
+the switch statement.  This flag is enabled by default
+at @option{-O2} and higher.

this mentions we do this only when we later can convert the
switch again but both passes (we still have two :/) have
independent guards.

+  /* For now, just wipe the dominator information.  */
+  free_dominance_info (CDI_DOMINATORS);

could at least be conditional on the vop renaming condition...

+  if (!all_candidates.is_empty ())
+    mark_virtual_operands_for_renaming (fun);

+      if (bitmap_bit_p (*visited_bbs, bb->index))
+       break;
+      bitmap_set_bit (*visited_bbs, bb->index);

since you are using a bitmap and not a sbitmap (why?)
you can combine those into

   if (!bitmap_set_bit (*visited_bbs, bb->index))
    break;

+      /* Current we support following patterns (situations):
+
+        1) if condition with equal operation:
+
...

did you see whether using

   register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);

works equally well?  It fills the 'asserts' vector with relations
derived from 'lhs'.  There's also
vr_values::extract_range_for_var_from_comparison_expr
to compute the case_range

+      /* If it's not the first condition, then we need a BB without
+        any statements.  */
+      if (!first)
+       {
+         unsigned stmt_count = 0;
+         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
+              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
+           ++stmt_count;
+
+         if (stmt_count - visited_stmt_count != 0)
+           break;

hmm, OK, this might be a bit iffy to get correct then, still it's a lot
of pattern maching code that is there elsewhere already.
ifcombine simply hoists any stmts without side-effects up the
dominator tree and thus only requires BBs without side-effects
(IIRC there's a predicate fn for that).

+      /* Prevent loosing information for a PHI node where 2 edges will
+        be folded into one.  Note that we must do the same also for false_edge
+        (for last BB in a if-elseif chain).  */
+      if (!chain->record_phi_arguments (true_edge)
+         || !chain->record_phi_arguments (false_edge))

I don't really get this - looking at record_phi_arguments it seems
we're requiring that all edges into the same PHI from inside the case
(irrespective of from which case label) have the same value for the
PHI arg?

+             if (arg != *v)
+               return false;

should use operand_equal_p at least, REAL_CSTs are for example
not shared tree nodes.  I'll also notice that if record_phi_arguments
fails we still may have altered its hash-map even though the particular
edge will not participate in the current chain, so it will affect other
chains ending in the same BB.  Overall this looks a bit too conservative
(and random, based on visiting order).

+    expanded_location loc
+    = expand_location (gimple_location (chain->m_first_condition));
+      if (dump_file)
+       {
+         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
+                  "(%d BBs) transformed into a switch statement.\n",
+                  loc.file, loc.line, total_case_values,
+                  chain->m_entries.length ());

Use dump_printf_loc and you can pass a gimple * stmt as location.

+      /* Follow if-elseif-elseif chain.  */
+      bb = false_edge->dest;

so that means the code doesn't handle a tree, right?  But what
makes us sure the chain doesn't continue on the true_edge instead,
guess this degenerate tree isn't handled either.

I was thinking on whether doing the switch discovery in a reverse
CFG walk, recording for each BB what case_range(s) it represents
for a particular variable(s) so when visiting a dominator you
can quickly figure what's the relevant children (true, false or both).
It would also make the matching a BB-local operation where you'd
do the case_label discovery based on the single-pred BBs gimple-cond.

+  output = bit_test_cluster::find_bit_tests (filtered_clusters);
+  r = output.length () < filtered_clusters.length ();
+  if (r)
+    dump_clusters (&output, "BT can be built");

so as of the very above comment - this might be guarded with
flag_tree_switch_conversion?

As mentioned previously I would have liked to see if-to-switch
integrated with switch-conversion, having separate passes is
somewhat awkward (for example the redundant and possibly
expensive find_bit_tests).

+         /* Move all statements from the BB to the BB with gswitch.  */
+         auto_vec<gimple *> stmts;
+         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
+              !gsi_end_p (gsi); gsi_next (&gsi))
+           {
+             gimple *stmt = gsi_stmt (gsi);
+             if (gimple_code (stmt) != GIMPLE_COND)
+               stmts.safe_push (stmt);
+           }
+
+         for (unsigned i = 0; i < stmts.length (); i++)
+           {
+             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
+             gsi_move_before (&gsi_from, &gsi);
+           }

so you are already hoisting all stmts ...

+      make_edge (first_cond.m_bb, case_bb, 0);

and if this doesn't create a new edge you need equivalent PHI
args in the case_bb.  To remove this restriction you "only"
have to add a forwarder.  Sth like

   edge e = make_edge (...);
   if (!e)
     {
        bb = create_basic_block ();
        make_edge (first_cond.m_bb, bb, 0);
        e = make_edge (bb, case_bb, 0);
     }
  fill PHI arg of 'e' from original value (no need to create the hash-map then)

Richard.


> Martin
Martin Liška Sept. 25, 2020, 2:05 p.m. UTC | #17
On 9/24/20 2:41 PM, Richard Biener wrote:
> On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
>>
>> On 9/1/20 4:50 PM, David Malcolm wrote:
>>> Hope this is constructive
>>> Dave
>>
>> Thank you David. All of them very very useful!
>>
>> There's updated version of the patch.

Hey.

What a juicy patch review!

> 
> I noticed several functions without a function-level comment.

Yep, but several of them are documented in a class declaration. Anyway, I will
improve for the next time.

> 
> -  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);
> 
> I thought we generally leave this to the compiler ...
> 
> +@item -fconvert-if-to-switch
> +@opindex fconvert-if-to-switch
> +Perform conversion of an if cascade into a switch statement.
> +Do so if the switch can be later transformed using a jump table
> +or a bit test.  The transformation can help to produce faster code for
> +the switch statement.  This flag is enabled by default
> +at @option{-O2} and higher.
> 
> this mentions we do this only when we later can convert the
> switch again but both passes (we still have two :/) have
> independent guards.

Yes, we have the option for jump tables (-jump-tables), but we miss one for a bit-test.
Moreover, as mentioned in the cover email, one can see it beneficial to convert a if-chain
to switch as the expansion (without any BT and JT) can benefit from balanced tree.

> 
> +  /* For now, just wipe the dominator information.  */
> +  free_dominance_info (CDI_DOMINATORS);
> 
> could at least be conditional on the vop renaming condition...
> 
> +  if (!all_candidates.is_empty ())
> +    mark_virtual_operands_for_renaming (fun);

Yep.

> 
> +      if (bitmap_bit_p (*visited_bbs, bb->index))
> +       break;
> +      bitmap_set_bit (*visited_bbs, bb->index);
> 
> since you are using a bitmap and not a sbitmap (why?)
> you can combine those into

New to me, thanks.

> 
>     if (!bitmap_set_bit (*visited_bbs, bb->index))
>      break;
> 
> +      /* Current we support following patterns (situations):
> +
> +        1) if condition with equal operation:
> +
> ...
> 
> did you see whether using
> 
>     register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);
> 
> works equally well?  It fills the 'asserts' vector with relations
> derived from 'lhs'.  There's also
> vr_values::extract_range_for_var_from_comparison_expr
> to compute the case_range

Good point! I must admit that my patch doesn't properly handle negative conditions:

   if (argc != 11111)
   {
     if (argc == 1)
       global = 222;
     ...
   }

which can VRP correctly identify as anti-range:
int ~[11111, 11111]  EQUIVALENCES: { argc_8(D) } (1 elements)$1 = void

I have question about OR and AND conditions:

   <bb 2> :
   _1 = aChar_8(D) == 1;
   _2 = aChar_8(D) == 10;
   _3 = _1 | _2;
   if (_3 != 0)
     goto <bb 6>; [INV]
   else
     goto <bb 3>; [INV]

   <bb 2> :
   _1 = aChar_8(D) != 1;
   _2 = aChar_8(D) != 10;
   _3 = _1 & _2;
   if (_3 != 0)
     goto <bb 6>; [INV]
   else
     goto <bb 3>; [INV]

Can I somehow get that from VRP (as I ask register_edge_assert_for only for LHS
of a condition)?

> 
> +      /* If it's not the first condition, then we need a BB without
> +        any statements.  */
> +      if (!first)
> +       {
> +         unsigned stmt_count = 0;
> +         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
> +              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
> +           ++stmt_count;
> +
> +         if (stmt_count - visited_stmt_count != 0)
> +           break;
> 
> hmm, OK, this might be a bit iffy to get correct then, still it's a lot
> of pattern maching code that is there elsewhere already.
> ifcombine simply hoists any stmts without side-effects up the
> dominator tree and thus only requires BBs without side-effects
> (IIRC there's a predicate fn for that).

Yes, I completely miss support for code hoisting (expect first BB where we put gswitch).
If I'm correct hoisting should be possible where case destination should be a new BB
that will contain original statements and then it will jump to a case destination block.

> 
> +      /* Prevent loosing information for a PHI node where 2 edges will
> +        be folded into one.  Note that we must do the same also for false_edge
> +        (for last BB in a if-elseif chain).  */
> +      if (!chain->record_phi_arguments (true_edge)
> +         || !chain->record_phi_arguments (false_edge))
> 
> I don't really get this - looking at record_phi_arguments it seems
> we're requiring that all edges into the same PHI from inside the case
> (irrespective of from which case label) have the same value for the
> PHI arg?

I guess so, I'll refresh the functionality.

> 
> +             if (arg != *v)
> +               return false;
> 
> should use operand_equal_p at least, REAL_CSTs are for example
> not shared tree nodes.  I'll also notice that if record_phi_arguments
> fails we still may have altered its hash-map even though the particular
> edge will not participate in the current chain, so it will affect other
> chains ending in the same BB.  Overall this looks a bit too conservative
> (and random, based on visiting order).

Oh, yes, it's not properly cleared once we bail out for a particular chain.

> 
> +    expanded_location loc
> +    = expand_location (gimple_location (chain->m_first_condition));
> +      if (dump_file)
> +       {
> +         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
> +                  "(%d BBs) transformed into a switch statement.\n",
> +                  loc.file, loc.line, total_case_values,
> +                  chain->m_entries.length ());
> 
> Use dump_printf_loc and you can pass a gimple * stmt as location.
> 
> +      /* Follow if-elseif-elseif chain.  */
> +      bb = false_edge->dest;
> 
> so that means the code doesn't handle a tree, right?  But what
> makes us sure the chain doesn't continue on the true_edge instead,
> guess this degenerate tree isn't handled either.

As mentioned earlier, I didn't consider VAR != CST type of conditions that
makes it more complicated.

> 
> I was thinking on whether doing the switch discovery in a reverse
> CFG walk, recording for each BB what case_range(s) it represents
> for a particular variable(s) so when visiting a dominator you
> can quickly figure what's the relevant children (true, false or both).

Sounds promising. Note that right now we do not support overlapping cases like:

   if (5 <= argc && argc <= 10)
     foo ();
   else if (6 <= argc && argc <= 100)
     foo ();

So I'm wondering if we can support 2 children?

> It would also make the matching a BB-local operation where you'd
> do the case_label discovery based on the single-pred BBs gimple-cond.

Can you please describe more how will the walk work?

> 
> +  output = bit_test_cluster::find_bit_tests (filtered_clusters);
> +  r = output.length () < filtered_clusters.length ();
> +  if (r)
> +    dump_clusters (&output, "BT can be built");
> 
> so as of the very above comment - this might be guarded with
> flag_tree_switch_conversion?

flag_tree_switch_conversion isn't connected to the if-chain pass (yet).

> 
> As mentioned previously I would have liked to see if-to-switch
> integrated with switch-conversion, having separate passes is
> somewhat awkward (for example the redundant and possibly
> expensive find_bit_tests).

Well, the CFG transformation for BT and JT is not trivial and I would like
to go in the first iteration through gswitch statements.
I have a massive speed up for the find_bit_tests/find_jump_tables.

> 
> +         /* Move all statements from the BB to the BB with gswitch.  */
> +         auto_vec<gimple *> stmts;
> +         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
> +              !gsi_end_p (gsi); gsi_next (&gsi))
> +           {
> +             gimple *stmt = gsi_stmt (gsi);
> +             if (gimple_code (stmt) != GIMPLE_COND)
> +               stmts.safe_push (stmt);
> +           }
> +
> +         for (unsigned i = 0; i < stmts.length (); i++)
> +           {
> +             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
> +             gsi_move_before (&gsi_from, &gsi);
> +           }
> 
> so you are already hoisting all stmts ...

As mentioned, it's not supported right now. This moves all these kind of "temp" statements:

   _1 = aChar_8(D) == 1;
   _2 = aChar_8(D) == 10;
   _3 = _1 | _2;

Martin

> 
> +      make_edge (first_cond.m_bb, case_bb, 0);
> 
> and if this doesn't create a new edge you need equivalent PHI
> args in the case_bb.  To remove this restriction you "only"
> have to add a forwarder.  Sth like
> 
>     edge e = make_edge (...);
>     if (!e)
>       {
>          bb = create_basic_block ();
>          make_edge (first_cond.m_bb, bb, 0);
>          e = make_edge (bb, case_bb, 0);
>       }
>    fill PHI arg of 'e' from original value (no need to create the hash-map then)
> 
> Richard.
> 
> 
>> Martin
Richard Biener Sept. 29, 2020, 8:46 a.m. UTC | #18
On Fri, Sep 25, 2020 at 4:05 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 9/24/20 2:41 PM, Richard Biener wrote:
> > On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
> >>
> >> On 9/1/20 4:50 PM, David Malcolm wrote:
> >>> Hope this is constructive
> >>> Dave
> >>
> >> Thank you David. All of them very very useful!
> >>
> >> There's updated version of the patch.
>
> Hey.
>
> What a juicy patch review!
>
> >
> > I noticed several functions without a function-level comment.
>
> Yep, but several of them are documented in a class declaration. Anyway, I will
> improve for the next time.
>
> >
> > -  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);
> >
> > I thought we generally leave this to the compiler ...
> >
> > +@item -fconvert-if-to-switch
> > +@opindex fconvert-if-to-switch
> > +Perform conversion of an if cascade into a switch statement.
> > +Do so if the switch can be later transformed using a jump table
> > +or a bit test.  The transformation can help to produce faster code for
> > +the switch statement.  This flag is enabled by default
> > +at @option{-O2} and higher.
> >
> > this mentions we do this only when we later can convert the
> > switch again but both passes (we still have two :/) have
> > independent guards.
>
> Yes, we have the option for jump tables (-jump-tables), but we miss one for a bit-test.
> Moreover, as mentioned in the cover email, one can see it beneficial to convert a if-chain
> to switch as the expansion (without any BT and JT) can benefit from balanced tree.
>
> >
> > +  /* For now, just wipe the dominator information.  */
> > +  free_dominance_info (CDI_DOMINATORS);
> >
> > could at least be conditional on the vop renaming condition...
> >
> > +  if (!all_candidates.is_empty ())
> > +    mark_virtual_operands_for_renaming (fun);
>
> Yep.
>
> >
> > +      if (bitmap_bit_p (*visited_bbs, bb->index))
> > +       break;
> > +      bitmap_set_bit (*visited_bbs, bb->index);
> >
> > since you are using a bitmap and not a sbitmap (why?)
> > you can combine those into
>
> New to me, thanks.
>
> >
> >     if (!bitmap_set_bit (*visited_bbs, bb->index))
> >      break;
> >
> > +      /* Current we support following patterns (situations):
> > +
> > +        1) if condition with equal operation:
> > +
> > ...
> >
> > did you see whether using
> >
> >     register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);
> >
> > works equally well?  It fills the 'asserts' vector with relations
> > derived from 'lhs'.  There's also
> > vr_values::extract_range_for_var_from_comparison_expr
> > to compute the case_range
>
> Good point! I must admit that my patch doesn't properly handle negative conditions:
>
>    if (argc != 11111)
>    {
>      if (argc == 1)
>        global = 222;
>      ...
>    }
>
> which can VRP correctly identify as anti-range:
> int ~[11111, 11111]  EQUIVALENCES: { argc_8(D) } (1 elements)$1 = void
>
> I have question about OR and AND conditions:
>
>    <bb 2> :
>    _1 = aChar_8(D) == 1;
>    _2 = aChar_8(D) == 10;
>    _3 = _1 | _2;
>    if (_3 != 0)
>      goto <bb 6>; [INV]
>    else
>      goto <bb 3>; [INV]
>
>    <bb 2> :
>    _1 = aChar_8(D) != 1;
>    _2 = aChar_8(D) != 10;
>    _3 = _1 & _2;
>    if (_3 != 0)
>      goto <bb 6>; [INV]
>    else
>      goto <bb 3>; [INV]
>
> Can I somehow get that from VRP (as I ask register_edge_assert_for only for LHS
> of a condition)?

Yes, you simply get all sorts of conditions that hold when a condition is
true, not just those based on the SSA name you put in.  But it occured
to me that the use-case is somewhat different - for switch-conversion
you want to know whether the test _exactly_ matches a range test,
the VRP worker will not tell you that.  For example if you had
if (x &&  a > 3 && a < 7) then it will give you 'a in [4, 6]' and it might
not give you 'x in [1, 1]' (for example if x is float).  But that's required
for correctness.

So we're back to your custom crafted code unless we manage to somehow
refactor the VRP condition analysis to handle both cases (should be
possible I think, but have not looked too closely).  Maybe the actual
matching pieces can be shared at least.

> >
> > +      /* If it's not the first condition, then we need a BB without
> > +        any statements.  */
> > +      if (!first)
> > +       {
> > +         unsigned stmt_count = 0;
> > +         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
> > +              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
> > +           ++stmt_count;
> > +
> > +         if (stmt_count - visited_stmt_count != 0)
> > +           break;
> >
> > hmm, OK, this might be a bit iffy to get correct then, still it's a lot
> > of pattern maching code that is there elsewhere already.
> > ifcombine simply hoists any stmts without side-effects up the
> > dominator tree and thus only requires BBs without side-effects
> > (IIRC there's a predicate fn for that).
>
> Yes, I completely miss support for code hoisting (expect first BB where we put gswitch).
> If I'm correct hoisting should be possible where case destination should be a new BB
> that will contain original statements and then it will jump to a case destination block.
>
> >
> > +      /* Prevent loosing information for a PHI node where 2 edges will
> > +        be folded into one.  Note that we must do the same also for false_edge
> > +        (for last BB in a if-elseif chain).  */
> > +      if (!chain->record_phi_arguments (true_edge)
> > +         || !chain->record_phi_arguments (false_edge))
> >
> > I don't really get this - looking at record_phi_arguments it seems
> > we're requiring that all edges into the same PHI from inside the case
> > (irrespective of from which case label) have the same value for the
> > PHI arg?
>
> I guess so, I'll refresh the functionality.
>
> >
> > +             if (arg != *v)
> > +               return false;
> >
> > should use operand_equal_p at least, REAL_CSTs are for example
> > not shared tree nodes.  I'll also notice that if record_phi_arguments
> > fails we still may have altered its hash-map even though the particular
> > edge will not participate in the current chain, so it will affect other
> > chains ending in the same BB.  Overall this looks a bit too conservative
> > (and random, based on visiting order).
>
> Oh, yes, it's not properly cleared once we bail out for a particular chain.
>
> >
> > +    expanded_location loc
> > +    = expand_location (gimple_location (chain->m_first_condition));
> > +      if (dump_file)
> > +       {
> > +         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
> > +                  "(%d BBs) transformed into a switch statement.\n",
> > +                  loc.file, loc.line, total_case_values,
> > +                  chain->m_entries.length ());
> >
> > Use dump_printf_loc and you can pass a gimple * stmt as location.
> >
> > +      /* Follow if-elseif-elseif chain.  */
> > +      bb = false_edge->dest;
> >
> > so that means the code doesn't handle a tree, right?  But what
> > makes us sure the chain doesn't continue on the true_edge instead,
> > guess this degenerate tree isn't handled either.
>
> As mentioned earlier, I didn't consider VAR != CST type of conditions that
> makes it more complicated.
>
> >
> > I was thinking on whether doing the switch discovery in a reverse
> > CFG walk, recording for each BB what case_range(s) it represents
> > for a particular variable(s) so when visiting a dominator you
> > can quickly figure what's the relevant children (true, false or both).
>
> Sounds promising. Note that right now we do not support overlapping cases like:
>
>    if (5 <= argc && argc <= 10)
>      foo ();
>    else if (6 <= argc && argc <= 100)
>      foo ();
>
> So I'm wondering if we can support 2 children?
>
> > It would also make the matching a BB-local operation where you'd
> > do the case_label discovery based on the single-pred BBs gimple-cond.
>
> Can you please describe more how will the walk work?
>
> >
> > +  output = bit_test_cluster::find_bit_tests (filtered_clusters);
> > +  r = output.length () < filtered_clusters.length ();
> > +  if (r)
> > +    dump_clusters (&output, "BT can be built");
> >
> > so as of the very above comment - this might be guarded with
> > flag_tree_switch_conversion?
>
> flag_tree_switch_conversion isn't connected to the if-chain pass (yet).
>
> >
> > As mentioned previously I would have liked to see if-to-switch
> > integrated with switch-conversion, having separate passes is
> > somewhat awkward (for example the redundant and possibly
> > expensive find_bit_tests).
>
> Well, the CFG transformation for BT and JT is not trivial and I would like
> to go in the first iteration through gswitch statements.
> I have a massive speed up for the find_bit_tests/find_jump_tables.
>
> >
> > +         /* Move all statements from the BB to the BB with gswitch.  */
> > +         auto_vec<gimple *> stmts;
> > +         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
> > +              !gsi_end_p (gsi); gsi_next (&gsi))
> > +           {
> > +             gimple *stmt = gsi_stmt (gsi);
> > +             if (gimple_code (stmt) != GIMPLE_COND)
> > +               stmts.safe_push (stmt);
> > +           }
> > +
> > +         for (unsigned i = 0; i < stmts.length (); i++)
> > +           {
> > +             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
> > +             gsi_move_before (&gsi_from, &gsi);
> > +           }
> >
> > so you are already hoisting all stmts ...
>
> As mentioned, it's not supported right now. This moves all these kind of "temp" statements:
>
>    _1 = aChar_8(D) == 1;
>    _2 = aChar_8(D) == 10;
>    _3 = _1 | _2;

Sure, but that _is_ hoisting of all stmts.

> Martin
>
> >
> > +      make_edge (first_cond.m_bb, case_bb, 0);
> >
> > and if this doesn't create a new edge you need equivalent PHI
> > args in the case_bb.  To remove this restriction you "only"
> > have to add a forwarder.  Sth like
> >
> >     edge e = make_edge (...);
> >     if (!e)
> >       {
> >          bb = create_basic_block ();
> >          make_edge (first_cond.m_bb, bb, 0);
> >          e = make_edge (bb, case_bb, 0);
> >       }
> >    fill PHI arg of 'e' from original value (no need to create the hash-map then)
> >
> > Richard.
> >
> >
> >> Martin
>
Martin Liška Oct. 2, 2020, 1:23 p.m. UTC | #19
On 9/24/20 2:41 PM, Richard Biener wrote:
> On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
>>
>> On 9/1/20 4:50 PM, David Malcolm wrote:
>>> Hope this is constructive
>>> Dave
>>
>> Thank you David. All of them very very useful!
>>
>> There's updated version of the patch.
> 
> I noticed several functions without a function-level comment.
> 
> -  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);
> 
> I thought we generally leave this to the compiler ...

Hey.

This one is needed, otherwise we'll have a compilation error (multiple definitions).

> 
> +@item -fconvert-if-to-switch
> +@opindex fconvert-if-to-switch
> +Perform conversion of an if cascade into a switch statement.
> +Do so if the switch can be later transformed using a jump table
> +or a bit test.  The transformation can help to produce faster code for
> +the switch statement.  This flag is enabled by default
> +at @option{-O2} and higher.
> 
> this mentions we do this only when we later can convert the
> switch again but both passes (we still have two :/) have
> independent guards.

All right, I'm planning to come up with -fbit-tests options and this transformation
will happen only if BT or JT are enabled.

> 
> +  /* For now, just wipe the dominator information.  */
> +  free_dominance_info (CDI_DOMINATORS);
> 
> could at least be conditional on the vop renaming condition...

How do you mean this?

> 
> +  if (!all_candidates.is_empty ())
> +    mark_virtual_operands_for_renaming (fun);
> 
> +      if (bitmap_bit_p (*visited_bbs, bb->index))
> +       break;
> +      bitmap_set_bit (*visited_bbs, bb->index);
> 
> since you are using a bitmap and not a sbitmap (why?)
> you can combine those into

Yes, sbitmap would be better.

> 
>     if (!bitmap_set_bit (*visited_bbs, bb->index))
>      break;

Unfortunately, bitmap_set_bit for sbitmap is a void return function.
Should I change it?

> 
> +      /* Current we support following patterns (situations):
> +
> +        1) if condition with equal operation:
> +
> ...
> 
> did you see whether using
> 
>     register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);
> 
> works equally well?  It fills the 'asserts' vector with relations
> derived from 'lhs'.  There's also
> vr_values::extract_range_for_var_from_comparison_expr
> to compute the case_range
> 
> +      /* If it's not the first condition, then we need a BB without
> +        any statements.  */
> +      if (!first)
> +       {
> +         unsigned stmt_count = 0;
> +         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
> +              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
> +           ++stmt_count;
> +
> +         if (stmt_count - visited_stmt_count != 0)
> +           break;
> 
> hmm, OK, this might be a bit iffy to get correct then, still it's a lot
> of pattern maching code that is there elsewhere already.
> ifcombine simply hoists any stmts without side-effects up the
> dominator tree and thus only requires BBs without side-effects
> (IIRC there's a predicate fn for that).
> 
> +      /* Prevent loosing information for a PHI node where 2 edges will
> +        be folded into one.  Note that we must do the same also for false_edge
> +        (for last BB in a if-elseif chain).  */
> +      if (!chain->record_phi_arguments (true_edge)
> +         || !chain->record_phi_arguments (false_edge))
> 
> I don't really get this - looking at record_phi_arguments it seems
> we're requiring that all edges into the same PHI from inside the case
> (irrespective of from which case label) have the same value for the
> PHI arg?
> 
> +             if (arg != *v)
> +               return false;

This one is really needed for situations like:

cat wchar.i
int i;

int
pg_utf_mblen() {
   int len;
   if (i == 4)
     len = 3;
   else if (i == 2)
     len = 4;
   else if (i == 6)
     len = 1;
   return len;
}

where we end up just with one edge from switch BB to a destination BB where
we have the PHI:
   # len_4 = PHI <3(2), 4(3), len_6(D)(4), 1(5)>

> 
> should use operand_equal_p at least, REAL_CSTs are for example
> not shared tree nodes.  I'll also notice that if record_phi_arguments
> fails we still may have altered its hash-map even though the particular
> edge will not participate in the current chain, so it will affect other
> chains ending in the same BB.  Overall this looks a bit too conservative
> (and random, based on visiting order).

No, the m_phi_map is destroyed when we call 'delete chain'.

> 
> +    expanded_location loc
> +    = expand_location (gimple_location (chain->m_first_condition));
> +      if (dump_file)
> +       {
> +         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
> +                  "(%d BBs) transformed into a switch statement.\n",
> +                  loc.file, loc.line, total_case_values,
> +                  chain->m_entries.length ());
> 
> Use dump_printf_loc and you can pass a gimple * stmt as location.

Good idea.

> 
> +      /* Follow if-elseif-elseif chain.  */
> +      bb = false_edge->dest;
> 
> so that means the code doesn't handle a tree, right?  But what
> makes us sure the chain doesn't continue on the true_edge instead,
> guess this degenerate tree isn't handled either.

Well, I was thinking about this one more time. I would like to see
a first version that will handle the simple chains that are trivial
switch statements:

if (x == 1)
else if (x ..)
...

that was my original motivation and it has quite nice coverage.
Later we can support code hoisting and negative expressions
like x != 123. Hopefully the upcoming Ranger infrastructure can help
us here. Is it acceptable approach for upcoming GCC 11?

Martin

> 
> I was thinking on whether doing the switch discovery in a reverse
> CFG walk, recording for each BB what case_range(s) it represents
> for a particular variable(s) so when visiting a dominator you
> can quickly figure what's the relevant children (true, false or both).
> It would also make the matching a BB-local operation where you'd
> do the case_label discovery based on the single-pred BBs gimple-cond.
> 
> +  output = bit_test_cluster::find_bit_tests (filtered_clusters);
> +  r = output.length () < filtered_clusters.length ();
> +  if (r)
> +    dump_clusters (&output, "BT can be built");
> 
> so as of the very above comment - this might be guarded with
> flag_tree_switch_conversion?
> 
> As mentioned previously I would have liked to see if-to-switch
> integrated with switch-conversion, having separate passes is
> somewhat awkward (for example the redundant and possibly
> expensive find_bit_tests).
> 
> +         /* Move all statements from the BB to the BB with gswitch.  */
> +         auto_vec<gimple *> stmts;
> +         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
> +              !gsi_end_p (gsi); gsi_next (&gsi))
> +           {
> +             gimple *stmt = gsi_stmt (gsi);
> +             if (gimple_code (stmt) != GIMPLE_COND)
> +               stmts.safe_push (stmt);
> +           }
> +
> +         for (unsigned i = 0; i < stmts.length (); i++)
> +           {
> +             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
> +             gsi_move_before (&gsi_from, &gsi);
> +           }
> 
> so you are already hoisting all stmts ...
> 
> +      make_edge (first_cond.m_bb, case_bb, 0);
> 
> and if this doesn't create a new edge you need equivalent PHI
> args in the case_bb.  To remove this restriction you "only"
> have to add a forwarder.  Sth like
> 
>     edge e = make_edge (...);
>     if (!e)
>       {
>          bb = create_basic_block ();
>          make_edge (first_cond.m_bb, bb, 0);
>          e = make_edge (bb, case_bb, 0);
>       }
>    fill PHI arg of 'e' from original value (no need to create the hash-map then)
> 
> Richard.
> 
> 
>> Martin
Martin Liška Oct. 2, 2020, 1:26 p.m. UTC | #20
On 9/29/20 10:46 AM, Richard Biener wrote:
> On Fri, Sep 25, 2020 at 4:05 PM Martin Liška <mliska@suse.cz> wrote:
>>
>> On 9/24/20 2:41 PM, Richard Biener wrote:
>>> On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
>>>>
>>>> On 9/1/20 4:50 PM, David Malcolm wrote:
>>>>> Hope this is constructive
>>>>> Dave
>>>>
>>>> Thank you David. All of them very very useful!
>>>>
>>>> There's updated version of the patch.
>>
>> Hey.
>>
>> What a juicy patch review!
>>
>>>
>>> I noticed several functions without a function-level comment.
>>
>> Yep, but several of them are documented in a class declaration. Anyway, I will
>> improve for the next time.
>>
>>>
>>> -  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);
>>>
>>> I thought we generally leave this to the compiler ...
>>>
>>> +@item -fconvert-if-to-switch
>>> +@opindex fconvert-if-to-switch
>>> +Perform conversion of an if cascade into a switch statement.
>>> +Do so if the switch can be later transformed using a jump table
>>> +or a bit test.  The transformation can help to produce faster code for
>>> +the switch statement.  This flag is enabled by default
>>> +at @option{-O2} and higher.
>>>
>>> this mentions we do this only when we later can convert the
>>> switch again but both passes (we still have two :/) have
>>> independent guards.
>>
>> Yes, we have the option for jump tables (-jump-tables), but we miss one for a bit-test.
>> Moreover, as mentioned in the cover email, one can see it beneficial to convert a if-chain
>> to switch as the expansion (without any BT and JT) can benefit from balanced tree.
>>
>>>
>>> +  /* For now, just wipe the dominator information.  */
>>> +  free_dominance_info (CDI_DOMINATORS);
>>>
>>> could at least be conditional on the vop renaming condition...
>>>
>>> +  if (!all_candidates.is_empty ())
>>> +    mark_virtual_operands_for_renaming (fun);
>>
>> Yep.
>>
>>>
>>> +      if (bitmap_bit_p (*visited_bbs, bb->index))
>>> +       break;
>>> +      bitmap_set_bit (*visited_bbs, bb->index);
>>>
>>> since you are using a bitmap and not a sbitmap (why?)
>>> you can combine those into
>>
>> New to me, thanks.
>>
>>>
>>>      if (!bitmap_set_bit (*visited_bbs, bb->index))
>>>       break;
>>>
>>> +      /* Current we support following patterns (situations):
>>> +
>>> +        1) if condition with equal operation:
>>> +
>>> ...
>>>
>>> did you see whether using
>>>
>>>      register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);
>>>
>>> works equally well?  It fills the 'asserts' vector with relations
>>> derived from 'lhs'.  There's also
>>> vr_values::extract_range_for_var_from_comparison_expr
>>> to compute the case_range
>>
>> Good point! I must admit that my patch doesn't properly handle negative conditions:
>>
>>     if (argc != 11111)
>>     {
>>       if (argc == 1)
>>         global = 222;
>>       ...
>>     }
>>
>> which can VRP correctly identify as anti-range:
>> int ~[11111, 11111]  EQUIVALENCES: { argc_8(D) } (1 elements)$1 = void
>>
>> I have question about OR and AND conditions:
>>
>>     <bb 2> :
>>     _1 = aChar_8(D) == 1;
>>     _2 = aChar_8(D) == 10;
>>     _3 = _1 | _2;
>>     if (_3 != 0)
>>       goto <bb 6>; [INV]
>>     else
>>       goto <bb 3>; [INV]
>>
>>     <bb 2> :
>>     _1 = aChar_8(D) != 1;
>>     _2 = aChar_8(D) != 10;
>>     _3 = _1 & _2;
>>     if (_3 != 0)
>>       goto <bb 6>; [INV]
>>     else
>>       goto <bb 3>; [INV]
>>
>> Can I somehow get that from VRP (as I ask register_edge_assert_for only for LHS
>> of a condition)?
> 
> Yes, you simply get all sorts of conditions that hold when a condition is
> true, not just those based on the SSA name you put in.  But it occured
> to me that the use-case is somewhat different - for switch-conversion
> you want to know whether the test _exactly_ matches a range test,
> the VRP worker will not tell you that.  For example if you had
> if (x &&  a > 3 && a < 7) then it will give you 'a in [4, 6]' and it might
> not give you 'x in [1, 1]' (for example if x is float).  But that's required
> for correctness.

Hello.

Adding Ranger guys. Is it something that can be handled by the upcoming changes in VRP?

> 
> So we're back to your custom crafted code unless we manage to somehow
> refactor the VRP condition analysis to handle both cases (should be
> possible I think, but have not looked too closely).  Maybe the actual
> matching pieces can be shared at least.
> 
>>>
>>> +      /* If it's not the first condition, then we need a BB without
>>> +        any statements.  */
>>> +      if (!first)
>>> +       {
>>> +         unsigned stmt_count = 0;
>>> +         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
>>> +              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
>>> +           ++stmt_count;
>>> +
>>> +         if (stmt_count - visited_stmt_count != 0)
>>> +           break;
>>>
>>> hmm, OK, this might be a bit iffy to get correct then, still it's a lot
>>> of pattern maching code that is there elsewhere already.
>>> ifcombine simply hoists any stmts without side-effects up the
>>> dominator tree and thus only requires BBs without side-effects
>>> (IIRC there's a predicate fn for that).
>>
>> Yes, I completely miss support for code hoisting (expect first BB where we put gswitch).
>> If I'm correct hoisting should be possible where case destination should be a new BB
>> that will contain original statements and then it will jump to a case destination block.
>>
>>>
>>> +      /* Prevent loosing information for a PHI node where 2 edges will
>>> +        be folded into one.  Note that we must do the same also for false_edge
>>> +        (for last BB in a if-elseif chain).  */
>>> +      if (!chain->record_phi_arguments (true_edge)
>>> +         || !chain->record_phi_arguments (false_edge))
>>>
>>> I don't really get this - looking at record_phi_arguments it seems
>>> we're requiring that all edges into the same PHI from inside the case
>>> (irrespective of from which case label) have the same value for the
>>> PHI arg?
>>
>> I guess so, I'll refresh the functionality.
>>
>>>
>>> +             if (arg != *v)
>>> +               return false;
>>>
>>> should use operand_equal_p at least, REAL_CSTs are for example
>>> not shared tree nodes.  I'll also notice that if record_phi_arguments
>>> fails we still may have altered its hash-map even though the particular
>>> edge will not participate in the current chain, so it will affect other
>>> chains ending in the same BB.  Overall this looks a bit too conservative
>>> (and random, based on visiting order).
>>
>> Oh, yes, it's not properly cleared once we bail out for a particular chain.
>>
>>>
>>> +    expanded_location loc
>>> +    = expand_location (gimple_location (chain->m_first_condition));
>>> +      if (dump_file)
>>> +       {
>>> +         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
>>> +                  "(%d BBs) transformed into a switch statement.\n",
>>> +                  loc.file, loc.line, total_case_values,
>>> +                  chain->m_entries.length ());
>>>
>>> Use dump_printf_loc and you can pass a gimple * stmt as location.
>>>
>>> +      /* Follow if-elseif-elseif chain.  */
>>> +      bb = false_edge->dest;
>>>
>>> so that means the code doesn't handle a tree, right?  But what
>>> makes us sure the chain doesn't continue on the true_edge instead,
>>> guess this degenerate tree isn't handled either.
>>
>> As mentioned earlier, I didn't consider VAR != CST type of conditions that
>> makes it more complicated.
>>
>>>
>>> I was thinking on whether doing the switch discovery in a reverse
>>> CFG walk, recording for each BB what case_range(s) it represents
>>> for a particular variable(s) so when visiting a dominator you
>>> can quickly figure what's the relevant children (true, false or both).
>>
>> Sounds promising. Note that right now we do not support overlapping cases like:
>>
>>     if (5 <= argc && argc <= 10)
>>       foo ();
>>     else if (6 <= argc && argc <= 100)
>>       foo ();
>>
>> So I'm wondering if we can support 2 children?
>>
>>> It would also make the matching a BB-local operation where you'd
>>> do the case_label discovery based on the single-pred BBs gimple-cond.
>>
>> Can you please describe more how will the walk work?
>>
>>>
>>> +  output = bit_test_cluster::find_bit_tests (filtered_clusters);
>>> +  r = output.length () < filtered_clusters.length ();
>>> +  if (r)
>>> +    dump_clusters (&output, "BT can be built");
>>>
>>> so as of the very above comment - this might be guarded with
>>> flag_tree_switch_conversion?
>>
>> flag_tree_switch_conversion isn't connected to the if-chain pass (yet).
>>
>>>
>>> As mentioned previously I would have liked to see if-to-switch
>>> integrated with switch-conversion, having separate passes is
>>> somewhat awkward (for example the redundant and possibly
>>> expensive find_bit_tests).
>>
>> Well, the CFG transformation for BT and JT is not trivial and I would like
>> to go in the first iteration through gswitch statements.
>> I have a massive speed up for the find_bit_tests/find_jump_tables.
>>
>>>
>>> +         /* Move all statements from the BB to the BB with gswitch.  */
>>> +         auto_vec<gimple *> stmts;
>>> +         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
>>> +              !gsi_end_p (gsi); gsi_next (&gsi))
>>> +           {
>>> +             gimple *stmt = gsi_stmt (gsi);
>>> +             if (gimple_code (stmt) != GIMPLE_COND)
>>> +               stmts.safe_push (stmt);
>>> +           }
>>> +
>>> +         for (unsigned i = 0; i < stmts.length (); i++)
>>> +           {
>>> +             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
>>> +             gsi_move_before (&gsi_from, &gsi);
>>> +           }
>>>
>>> so you are already hoisting all stmts ...
>>
>> As mentioned, it's not supported right now. This moves all these kind of "temp" statements:
>>
>>     _1 = aChar_8(D) == 1;
>>     _2 = aChar_8(D) == 10;
>>     _3 = _1 | _2;
> 
> Sure, but that _is_ hoisting of all stmts.

No, hoisting for a real statement would break chain recognition by this code:

        /* If it's not the first condition, then we need a BB without
	 any statements.  */
       if (!first)
	{
	  unsigned stmt_count = 0;
	  for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
	       !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
	    ++stmt_count;

	  if (stmt_count - visited_stmt_count != 0)
	    break;
	}

Martin

> 
>> Martin
>>
>>>
>>> +      make_edge (first_cond.m_bb, case_bb, 0);
>>>
>>> and if this doesn't create a new edge you need equivalent PHI
>>> args in the case_bb.  To remove this restriction you "only"
>>> have to add a forwarder.  Sth like
>>>
>>>      edge e = make_edge (...);
>>>      if (!e)
>>>        {
>>>           bb = create_basic_block ();
>>>           make_edge (first_cond.m_bb, bb, 0);
>>>           e = make_edge (bb, case_bb, 0);
>>>        }
>>>     fill PHI arg of 'e' from original value (no need to create the hash-map then)
>>>
>>> Richard.
>>>
>>>
>>>> Martin
>>
Andrew MacLeod Oct. 2, 2020, 2:19 p.m. UTC | #21
On 10/2/20 9:26 AM, Martin Liška wrote:
>> Yes, you simply get all sorts of conditions that hold when a 
>> condition is
>> true, not just those based on the SSA name you put in.  But it occured
>> to me that the use-case is somewhat different - for switch-conversion
>> you want to know whether the test _exactly_ matches a range test,
>> the VRP worker will not tell you that.  For example if you had
>> if (x &&  a > 3 && a < 7) then it will give you 'a in [4, 6]' and it 
>> might
>> not give you 'x in [1, 1]' (for example if x is float).  But that's 
>> required
>> for correctness.
>
> Hello.
>
> Adding Ranger guys. Is it something that can be handled by the 
> upcoming changes in VRP?

Presumably. It depends on exactly how the code lays out.  We dont 
process floats, so we wont know anything about the float (at least this 
release :-).  We will sort through complex logicals and tell you what we 
do know, so if x is integral


    if (x &&  a > 3 && a < 7)

will give you, on the final true edge:

x_5(D)  int [-INF, -1][1, +INF]
a_6(D)  int [4, 6]


IF x is a float, then we wont give you anything for x obviously, but on 
the eventual true edge we'd still give you
a_6(D)  int [4, 6]


Andrew
Richard Biener Oct. 6, 2020, 7:47 a.m. UTC | #22
On Fri, Oct 2, 2020 at 3:23 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 9/24/20 2:41 PM, Richard Biener wrote:
> > On Wed, Sep 2, 2020 at 1:53 PM Martin Liška <mliska@suse.cz> wrote:
> >>
> >> On 9/1/20 4:50 PM, David Malcolm wrote:
> >>> Hope this is constructive
> >>> Dave
> >>
> >> Thank you David. All of them very very useful!
> >>
> >> There's updated version of the patch.
> >
> > I noticed several functions without a function-level comment.
> >
> > -  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);
> >
> > I thought we generally leave this to the compiler ...
>
> Hey.
>
> This one is needed, otherwise we'll have a compilation error (multiple definitions).
>
> >
> > +@item -fconvert-if-to-switch
> > +@opindex fconvert-if-to-switch
> > +Perform conversion of an if cascade into a switch statement.
> > +Do so if the switch can be later transformed using a jump table
> > +or a bit test.  The transformation can help to produce faster code for
> > +the switch statement.  This flag is enabled by default
> > +at @option{-O2} and higher.
> >
> > this mentions we do this only when we later can convert the
> > switch again but both passes (we still have two :/) have
> > independent guards.
>
> All right, I'm planning to come up with -fbit-tests options and this transformation
> will happen only if BT or JT are enabled.
>
> >
> > +  /* For now, just wipe the dominator information.  */
> > +  free_dominance_info (CDI_DOMINATORS);
> >
> > could at least be conditional on the vop renaming condition...
>
> How do you mean this?

don't free dominators if you didn't change anything.

> >
> > +  if (!all_candidates.is_empty ())
> > +    mark_virtual_operands_for_renaming (fun);
> >
> > +      if (bitmap_bit_p (*visited_bbs, bb->index))
> > +       break;
> > +      bitmap_set_bit (*visited_bbs, bb->index);
> >
> > since you are using a bitmap and not a sbitmap (why?)
> > you can combine those into
>
> Yes, sbitmap would be better.
>
> >
> >     if (!bitmap_set_bit (*visited_bbs, bb->index))
> >      break;
>
> Unfortunately, bitmap_set_bit for sbitmap is a void return function.
> Should I change it?

No, with sbitmaps you have to keep your current code.

> >
> > +      /* Current we support following patterns (situations):
> > +
> > +        1) if condition with equal operation:
> > +
> > ...
> >
> > did you see whether using
> >
> >     register_edge_assert_for (lhs, true_edge, code, lhs, rhs, asserts);
> >
> > works equally well?  It fills the 'asserts' vector with relations
> > derived from 'lhs'.  There's also
> > vr_values::extract_range_for_var_from_comparison_expr
> > to compute the case_range
> >
> > +      /* If it's not the first condition, then we need a BB without
> > +        any statements.  */
> > +      if (!first)
> > +       {
> > +         unsigned stmt_count = 0;
> > +         for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
> > +              !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
> > +           ++stmt_count;
> > +
> > +         if (stmt_count - visited_stmt_count != 0)
> > +           break;
> >
> > hmm, OK, this might be a bit iffy to get correct then, still it's a lot
> > of pattern maching code that is there elsewhere already.
> > ifcombine simply hoists any stmts without side-effects up the
> > dominator tree and thus only requires BBs without side-effects
> > (IIRC there's a predicate fn for that).
> >
> > +      /* Prevent loosing information for a PHI node where 2 edges will
> > +        be folded into one.  Note that we must do the same also for false_edge
> > +        (for last BB in a if-elseif chain).  */
> > +      if (!chain->record_phi_arguments (true_edge)
> > +         || !chain->record_phi_arguments (false_edge))
> >
> > I don't really get this - looking at record_phi_arguments it seems
> > we're requiring that all edges into the same PHI from inside the case
> > (irrespective of from which case label) have the same value for the
> > PHI arg?
> >
> > +             if (arg != *v)
> > +               return false;
>
> This one is really needed for situations like:
>
> cat wchar.i
> int i;
>
> int
> pg_utf_mblen() {
>    int len;
>    if (i == 4)
>      len = 3;
>    else if (i == 2)
>      len = 4;
>    else if (i == 6)
>      len = 1;
>    return len;
> }
>
> where we end up just with one edge from switch BB to a destination BB where
> we have the PHI:
>    # len_4 = PHI <3(2), 4(3), len_6(D)(4), 1(5)>

Yeah, see my comment on how to deal with this in code generation
(introduce a forwarder block).

> >
> > should use operand_equal_p at least, REAL_CSTs are for example
> > not shared tree nodes.  I'll also notice that if record_phi_arguments
> > fails we still may have altered its hash-map even though the particular
> > edge will not participate in the current chain, so it will affect other
> > chains ending in the same BB.  Overall this looks a bit too conservative
> > (and random, based on visiting order).
>
> No, the m_phi_map is destroyed when we call 'delete chain'.
>
> >
> > +    expanded_location loc
> > +    = expand_location (gimple_location (chain->m_first_condition));
> > +      if (dump_file)
> > +       {
> > +         fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
> > +                  "(%d BBs) transformed into a switch statement.\n",
> > +                  loc.file, loc.line, total_case_values,
> > +                  chain->m_entries.length ());
> >
> > Use dump_printf_loc and you can pass a gimple * stmt as location.
>
> Good idea.
>
> >
> > +      /* Follow if-elseif-elseif chain.  */
> > +      bb = false_edge->dest;
> >
> > so that means the code doesn't handle a tree, right?  But what
> > makes us sure the chain doesn't continue on the true_edge instead,
> > guess this degenerate tree isn't handled either.
>
> Well, I was thinking about this one more time. I would like to see
> a first version that will handle the simple chains that are trivial
> switch statements:
>
> if (x == 1)
> else if (x ..)
> ...
>
> that was my original motivation and it has quite nice coverage.
> Later we can support code hoisting and negative expressions
> like x != 123. Hopefully the upcoming Ranger infrastructure can help
> us here. Is it acceptable approach for upcoming GCC 11?

But is it really extensible with the current implementation?  I doubt so.

Richard.

> Martin
>
> >
> > I was thinking on whether doing the switch discovery in a reverse
> > CFG walk, recording for each BB what case_range(s) it represents
> > for a particular variable(s) so when visiting a dominator you
> > can quickly figure what's the relevant children (true, false or both).
> > It would also make the matching a BB-local operation where you'd
> > do the case_label discovery based on the single-pred BBs gimple-cond.
> >
> > +  output = bit_test_cluster::find_bit_tests (filtered_clusters);
> > +  r = output.length () < filtered_clusters.length ();
> > +  if (r)
> > +    dump_clusters (&output, "BT can be built");
> >
> > so as of the very above comment - this might be guarded with
> > flag_tree_switch_conversion?
> >
> > As mentioned previously I would have liked to see if-to-switch
> > integrated with switch-conversion, having separate passes is
> > somewhat awkward (for example the redundant and possibly
> > expensive find_bit_tests).
> >
> > +         /* Move all statements from the BB to the BB with gswitch.  */
> > +         auto_vec<gimple *> stmts;
> > +         for (gimple_stmt_iterator gsi = gsi_start_bb (entry.m_bb);
> > +              !gsi_end_p (gsi); gsi_next (&gsi))
> > +           {
> > +             gimple *stmt = gsi_stmt (gsi);
> > +             if (gimple_code (stmt) != GIMPLE_COND)
> > +               stmts.safe_push (stmt);
> > +           }
> > +
> > +         for (unsigned i = 0; i < stmts.length (); i++)
> > +           {
> > +             gimple_stmt_iterator gsi_from = gsi_for_stmt (stmts[i]);
> > +             gsi_move_before (&gsi_from, &gsi);
> > +           }
> >
> > so you are already hoisting all stmts ...
> >
> > +      make_edge (first_cond.m_bb, case_bb, 0);
> >
> > and if this doesn't create a new edge you need equivalent PHI
> > args in the case_bb.  To remove this restriction you "only"
> > have to add a forwarder.  Sth like
> >
> >     edge e = make_edge (...);
> >     if (!e)
> >       {
> >          bb = create_basic_block ();
> >          make_edge (first_cond.m_bb, bb, 0);
> >          e = make_edge (bb, case_bb, 0);
> >       }
> >    fill PHI arg of 'e' from original value (no need to create the hash-map then)
> >
> > Richard.
> >
> >
> >> Martin
>
Martin Liška Oct. 6, 2020, 12:09 p.m. UTC | #23
On 10/2/20 4:19 PM, Andrew MacLeod wrote:
> On 10/2/20 9:26 AM, Martin Liška wrote:
>>> Yes, you simply get all sorts of conditions that hold when a condition is
>>> true, not just those based on the SSA name you put in.  But it occured
>>> to me that the use-case is somewhat different - for switch-conversion
>>> you want to know whether the test _exactly_ matches a range test,
>>> the VRP worker will not tell you that.  For example if you had
>>> if (x &&  a > 3 && a < 7) then it will give you 'a in [4, 6]' and it might
>>> not give you 'x in [1, 1]' (for example if x is float).  But that's required
>>> for correctness.
>>
>> Hello.
>>
>> Adding Ranger guys. Is it something that can be handled by the upcoming changes in VRP?
> 
> Presumably. It depends on exactly how the code lays out.  We dont process floats, so we wont know anything about the float (at least this release :-).  We will sort through complex logicals and tell you what we do know, so if x is integral
> 
> 
>     if (x &&  a > 3 && a < 7)
> 
> will give you, on the final true edge:
> 
> x_5(D)  int [-INF, -1][1, +INF]
> a_6(D)  int [4, 6]
> 
> 
> IF x is a float, then we wont give you anything for x obviously, but on the eventual true edge we'd still give you
> a_6(D)  int [4, 6]

Which is an acceptable limitation for me.

However, I can't convince ranger to give me a proper ranges for. I'm using the following
code snippet:

   outgoing_range query;

   edge e;
   edge_iterator ei;
   FOR_EACH_EDGE (e, ei, bb->succs)
     {
       int_range_max range;
       if (query.edge_range_p (range, e))
	{
	  if (dump_file)
	    {
	  fprintf (dump_file, "%d->%d: ", e->src->index, e->dest->index);
	  range.dump(dump_file);
	  fprintf (dump_file, "\n");
	    }
	}
     }


if (9 <= index && index <= 123)
     return 123;

   <bb 2> :
   index.0_1 = (unsigned int) index_5(D);
   _2 = index.0_1 + 4294967287;
   if (_2 <= 114)
     goto <bb 3>; [INV]
   else
     goto <bb 4>; [INV]

I get:

2->3: _Bool [1, 1]
2->4: _Bool [0, 0]

Can I get to index_5 [9, 123] ?
Thanks,
Martin

> 
> 
> Andrew
> 
> 
>
Andrew MacLeod Oct. 6, 2020, 12:56 p.m. UTC | #24
On 10/6/20 8:09 AM, Martin Liška wrote:
> On 10/2/20 4:19 PM, Andrew MacLeod wrote:
>> On 10/2/20 9:26 AM, Martin Liška wrote:
>>>> Yes, you simply get all sorts of conditions that hold when a 
>>>> condition is
>>>> true, not just those based on the SSA name you put in.  But it occured
>>>> to me that the use-case is somewhat different - for switch-conversion
>>>> you want to know whether the test _exactly_ matches a range test,
>>>> the VRP worker will not tell you that.  For example if you had
>>>> if (x &&  a > 3 && a < 7) then it will give you 'a in [4, 6]' and 
>>>> it might
>>>> not give you 'x in [1, 1]' (for example if x is float).  But that's 
>>>> required
>>>> for correctness.
>>>
>>> Hello.
>>>
>>> Adding Ranger guys. Is it something that can be handled by the 
>>> upcoming changes in VRP?
>>
>> Presumably. It depends on exactly how the code lays out.  We dont 
>> process floats, so we wont know anything about the float (at least 
>> this release :-).  We will sort through complex logicals and tell you 
>> what we do know, so if x is integral
>>
>>
>>     if (x &&  a > 3 && a < 7)
>>
>> will give you, on the final true edge:
>>
>> x_5(D)  int [-INF, -1][1, +INF]
>> a_6(D)  int [4, 6]
>>
>>
>> IF x is a float, then we wont give you anything for x obviously, but 
>> on the eventual true edge we'd still give you
>> a_6(D)  int [4, 6]
>
> Which is an acceptable limitation for me.
>
> However, I can't convince ranger to give me a proper ranges for. I'm 
> using the following
> code snippet:
>
>   outgoing_range query;
>
>   edge e;
>   edge_iterator ei;
>   FOR_EACH_EDGE (e, ei, bb->succs)
>     {
>       int_range_max range;
>       if (query.edge_range_p (range, e))
>     {
>       if (dump_file)
>         {
>       fprintf (dump_file, "%d->%d: ", e->src->index, e->dest->index);
>       range.dump(dump_file);
>       fprintf (dump_file, "\n");
>         }
>     }
>     }
>
>
> if (9 <= index && index <= 123)
>     return 123;
>
>   <bb 2> :
>   index.0_1 = (unsigned int) index_5(D);
>   _2 = index.0_1 + 4294967287;
>   if (_2 <= 114)
>     goto <bb 3>; [INV]
>   else
>     goto <bb 4>; [INV]
>
> I get:
>
> 2->3: _Bool [1, 1]
> 2->4: _Bool [0, 0]
>
> Can I get to index_5 [9, 123] ?
> Thanks,
> Martin
>
Ah, by just using the outgoing_range class, all you are getting is 
static edges.  so a TRUE edge is always a [1,1] and a false edge is [0,0]
I provided that class so you could get the constant edges on switches.

if you want to get actual ranges for ssa-names, you will need the ranger 
(which I think is going in today).  It uses those values as the starting 
point for winding back to calculate other dependent names.

Then  you will want to query the ranger for the range of index_5 on that 
edge..

so you will need a gimple ranger instance instead of an outgoing_range 
object.

Andrew
Martin Liška Oct. 6, 2020, 1:09 p.m. UTC | #25
On 10/6/20 2:56 PM, Andrew MacLeod wrote:
> Ah, by just using the outgoing_range class, all you are getting is static edges.  so a TRUE edge is always a [1,1] and a false edge is [0,0]
> I provided that class so you could get the constant edges on switches.
> 
> if you want to get actual ranges for ssa-names, you will need the ranger (which I think is going in today).  It uses those values as the starting point for winding back to calculate other dependent names.

Ah, all right!

> 
> Then  you will want to query the ranger for the range of index_5 on that edge..

Fine! So the only tricky thing here is to select a proper SSA_NAME to query right?
In my case I need to cover situations like:

   index.0_1 = (unsigned int) index_5(D);
   _2 = index.0_1 + 4294967287;
   if (_2 <= 114)

or

     _1 = aChar_8(D) == 1;
     _2 = aChar_8(D) == 10;
     _3 = _1 | _2;
     if (_3 != 0)

Anything Ranger can help me with?

Martin

> 
> so you will need a gimple ranger instance instead of an outgoing_range object.
> 
> Andrew
Andrew MacLeod Oct. 6, 2020, 1:23 p.m. UTC | #26
On 10/6/20 9:09 AM, Martin Liška wrote:
> On 10/6/20 2:56 PM, Andrew MacLeod wrote:
>> Ah, by just using the outgoing_range class, all you are getting is 
>> static edges.  so a TRUE edge is always a [1,1] and a false edge is [0,0]
>> I provided that class so you could get the constant edges on switches.
>>
>> if you want to get actual ranges for ssa-names, you will need the 
>> ranger (which I think is going in today).  It uses those values as 
>> the starting point for winding back to calculate other dependent names.
>
> Ah, all right!
>
>>
>> Then  you will want to query the ranger for the range of index_5 on 
>> that edge..
>
> Fine! So the only tricky thing here is to select a proper SSA_NAME to 
> query right?
> In my case I need to cover situations like:
>
>   index.0_1 = (unsigned int) index_5(D);
>   _2 = index.0_1 + 4294967287;
>   if (_2 <= 114)
>
> or
>
>     _1 = aChar_8(D) == 1;
>     _2 = aChar_8(D) == 10;
>     _3 = _1 | _2;
>     if (_3 != 0)
>
> Anything Ranger can help me with?
>
> Martin
>

Well, it *does* assume you know the name of what you are looking for :-P


however, lets see.  it does know the names of things it can generate 
ranges for.     We havent gotten around to adding an API for querying 
that.  but that would be possible.

It maintains an export list of names it can calculate ranges for (as a 
bitmap). so for your 2 examples,  the export list of the first block 
contains
    _2, index.0_1, and index_5
and in the second case, it would contain
_3, _2, _1, and aChar_8

So even if you had access to the export list, you'd still have to figure 
out which one you wanted so I'm not sure that helps.  But i suppose you 
could go thru the list looking for something interesting.

I have longer term plans to expose/determine the "control names" which 
trigger the branch, and would be  '_2' in the first example and 
'aChar_8' in the second... but that facility is not built yet.



>>
>> so you will need a gimple ranger instance instead of an 
>> outgoing_range object.
>>
>> Andrew
>
Richard Biener Oct. 6, 2020, 1:41 p.m. UTC | #27
On Tue, Oct 6, 2020 at 3:09 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 10/6/20 2:56 PM, Andrew MacLeod wrote:
> > Ah, by just using the outgoing_range class, all you are getting is static edges.  so a TRUE edge is always a [1,1] and a false edge is [0,0]
> > I provided that class so you could get the constant edges on switches.
> >
> > if you want to get actual ranges for ssa-names, you will need the ranger (which I think is going in today).  It uses those values as the starting point for winding back to calculate other dependent names.
>
> Ah, all right!
>
> >
> > Then  you will want to query the ranger for the range of index_5 on that edge..
>
> Fine! So the only tricky thing here is to select a proper SSA_NAME to query right?
> In my case I need to cover situations like:

Note what ranger will get you has the very same limitations as what
register_edge_assert_for has - it will _not_ necessarily provide
something that, when "concatenated" with &&, reproduces the
original condition in full its full semantics.  That is, it's not a condition
"decomposition" tool either.

Richard.

>    index.0_1 = (unsigned int) index_5(D);
>    _2 = index.0_1 + 4294967287;
>    if (_2 <= 114)
>
> or
>
>      _1 = aChar_8(D) == 1;
>      _2 = aChar_8(D) == 10;
>      _3 = _1 | _2;
>      if (_3 != 0)
>
> Anything Ranger can help me with?
>
> Martin
>
> >
> > so you will need a gimple ranger instance instead of an outgoing_range object.
> >
> > Andrew
>
Martin Liška Oct. 6, 2020, 1:48 p.m. UTC | #28
On 10/6/20 9:47 AM, Richard Biener wrote:
> But is it really extensible with the current implementation?  I doubt so.

I must agree with the statement. So let's make the pass properly.
I would need a help with the algorithm where I'm planning to do the following
steps:

1) for each BB ending with a gcond, parse index variable and it's VR;
    I'll support:
    a) index == 123 ([123, 123])
    b) 1 <= index && index <= 9 ([1, 9])
    c) index == 123 || index == 12345 ([123, 123] [12345, 12345])
    d) index != 1 ([1, 1])
    e) index != 1 && index != 5 ([1, 1] [5, 5])

2) switch range edge is identified, e.g. true_edge for 1e, while false_edge for 1a

3) I want to support forward code hoisting, so for each condition BB we need to identify
    if the block contains only stmts without a side-effect

4) we can ignore BBs with condition variables that has small number of potential
    case switches

5) for each condition variable we can iterate bottom up in dominator order and try
    to find a BB predecessor chain (in first phase no BB in between such "condition" BBs)
    that uses a same condition variable

6) the chain will be converted to a switch statement
7) code hoisting must be done in order to move a gimple statements and fix potential
    gphis that can be collapsed

Is it something feasible that can work?
Thanks,

Martin
Jakub Jelinek Oct. 6, 2020, 2:12 p.m. UTC | #29
On Tue, Oct 06, 2020 at 03:48:38PM +0200, Martin Liška wrote:
> On 10/6/20 9:47 AM, Richard Biener wrote:
> > But is it really extensible with the current implementation?  I doubt so.
> 
> I must agree with the statement. So let's make the pass properly.
> I would need a help with the algorithm where I'm planning to do the following
> steps:
> 
> 1) for each BB ending with a gcond, parse index variable and it's VR;
>    I'll support:
>    a) index == 123 ([123, 123])
>    b) 1 <= index && index <= 9 ([1, 9])
>    c) index == 123 || index == 12345 ([123, 123] [12345, 12345])
>    d) index != 1 ([1, 1])
>    e) index != 1 && index != 5 ([1, 1] [5, 5])

The fold_range_test created cases are essential to support, so
f) index - 123U < 456U ([123, 456+123])
g) (unsigned) index - 123U < 456U (ditto)
but the discovery should actually recurse on all of those forms, so it will
handle
(unsigned) index - 123U < 456U || (unsigned) index - 16384U <= 32711U
etc.
You can see what reassoc init_range_entry does and do something similar?

	Jakub
Richard Biener Oct. 7, 2020, 8 a.m. UTC | #30
On Tue, Oct 6, 2020 at 4:03 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 10/6/20 9:47 AM, Richard Biener wrote:
> > But is it really extensible with the current implementation?  I doubt so.
>
> I must agree with the statement. So let's make the pass properly.
> I would need a help with the algorithm where I'm planning to do the following
> steps:
>
> 1) for each BB ending with a gcond, parse index variable and it's VR;
>     I'll support:
>     a) index == 123 ([123, 123])
>     b) 1 <= index && index <= 9 ([1, 9])
>     c) index == 123 || index == 12345 ([123, 123] [12345, 12345])
>     d) index != 1 ([1, 1])
>     e) index != 1 && index != 5 ([1, 1] [5, 5])
>
> 2) switch range edge is identified, e.g. true_edge for 1e, while false_edge for 1a
>
> 3) I want to support forward code hoisting, so for each condition BB we need to identify
>     if the block contains only stmts without a side-effect
>
> 4) we can ignore BBs with condition variables that has small number of potential
>     case switches
>
> 5) for each condition variable we can iterate bottom up in dominator order and try
>     to find a BB predecessor chain (in first phase no BB in between such "condition" BBs)
>     that uses a same condition variable
>
> 6) the chain will be converted to a switch statement
> 7) code hoisting must be done in order to move a gimple statements and fix potential
>     gphis that can be collapsed
>
> Is it something feasible that can work?

As said I'd have a BB-local pass over BBs recording the index variable
and the range covered by the BBs gcond, plus recording how many excess
stmts there are for eventual code motion.

Only after that BB-local pass start to group BBs in a walk from dominated to
dominating BBs looking for common indexes and building a case vector.

The main thing is to avoid repeatedly analyzing BBs conditions (so the first
pass could be also a on-demand precompute thing) and making the
case vector build optimal.

> Thanks,
>
> Martin
>
Martin Liška Oct. 12, 2020, 12:39 p.m. UTC | #31
On 10/6/20 4:12 PM, Jakub Jelinek wrote:
> On Tue, Oct 06, 2020 at 03:48:38PM +0200, Martin Liška wrote:
>> On 10/6/20 9:47 AM, Richard Biener wrote:
>>> But is it really extensible with the current implementation?  I doubt so.
>>
>> I must agree with the statement. So let's make the pass properly.
>> I would need a help with the algorithm where I'm planning to do the following
>> steps:
>>
>> 1) for each BB ending with a gcond, parse index variable and it's VR;
>>     I'll support:
>>     a) index == 123 ([123, 123])
>>     b) 1 <= index && index <= 9 ([1, 9])
>>     c) index == 123 || index == 12345 ([123, 123] [12345, 12345])
>>     d) index != 1 ([1, 1])
>>     e) index != 1 && index != 5 ([1, 1] [5, 5])
> 
> The fold_range_test created cases are essential to support, so
> f) index - 123U < 456U ([123, 456+123])
> g) (unsigned) index - 123U < 456U (ditto)
> but the discovery should actually recurse on all of those forms, so it will
> handle
> (unsigned) index - 123U < 456U || (unsigned) index - 16384U <= 32711U
> etc.
> You can see what reassoc init_range_entry does and do something similar?

All right, I started to use init_range_entry in combination with linearize_expr_tree.
One thing I have problem with is that linearize_expr_tree doesn't properly mark
all statements as visited for cases like:

   <bb 4> :
   index2.1_1 = (unsigned int) index2_16(D);
   _2 = index2.1_1 + 4294967196;
   _3 = _2 <= 100;
   _5 = index2.1_1 + 4294966996;
   _6 = _5 <= 33;
   _7 = _3 | _6;
   if (_7 != 0)
     goto <bb 5>; [INV]
   else
     goto <bb 6>; [INV]

As seen, all statements in this BB are used by the final _7 != 0 and it would
be handy for me to identify all statements that should be hoisted.

Thoughts how can I achieve that?
Thanks,
Martin
Martin Liška Oct. 12, 2020, 12:44 p.m. UTC | #32
On 10/7/20 10:00 AM, Richard Biener wrote:
> As said I'd have a BB-local pass over BBs recording the index variable
> and the range covered by the BBs gcond, plus recording how many excess
> stmts there are for eventual code motion.
> 
> Only after that BB-local pass start to group BBs in a walk from dominated to
> dominating BBs looking for common indexes and building a case vector.
> 
> The main thing is to avoid repeatedly analyzing BBs conditions (so the first
> pass could be also a on-demand precompute thing) and making the
> case vector build optimal.

I have a patch that does that using the infrastructure from tree-ssa-reassoc.
Now I would like to implement the code hoisting. Am I right that we want
something like:

if (index == C0)
   goto BB_0;
else
{
   BB1_to_hoist_stmts;
   if (index == C1)
     goto BB_1;
   else
   {
     BB2_to_hoist_stmts;
     if (index == C2)
       goto BB_2;
     else
       goto default_BB;
   }
}

be converted into:

switch(index)
{
    case C0:
      goto BB_0;
    case C1:
      BB1_to_hoist_stmts;
      goto BB_1;
    case C2:
      BB1_to_hoist_stmts;
      BB2_to_hoist_stmts;
      goto BB_2;
    else:
      BB1_to_hoist_stmts;
      BB2_to_hoist_stmts;
      goto default_BB;
}

?

Thanks,
Martin
Jakub Jelinek Oct. 12, 2020, 1 p.m. UTC | #33
On Mon, Oct 12, 2020 at 02:39:24PM +0200, Martin Liška wrote:
> All right, I started to use init_range_entry in combination with linearize_expr_tree.
> One thing I have problem with is that linearize_expr_tree doesn't properly mark
> all statements as visited for cases like:

Not sure if linearize_expr_tree is what you want, then you run into many
reassoc dependencies (e.g. having computed uids and all that).
My suggestion was to just copy and tweak init_range_entry (and reuse the
fold_const range step stuff).
There is no need to linearize anything, for what you want it doesn't matter
if you process (x | y) | (z | w) where all of x, y, z, w are some
comparisons, or x | (y | (z | w)) etc.  All you want to ensure is that
all the logical operations feeding each GIMPLE_COND are the same (all |s or
all &s), and that they make sense also for the basic blocks, then for each
of the subconditions find the ranges and verify that they all use the same
index.  And then I think you shouldn't hoist anything either, rather check
that all the blocks but the first one are no_side_effect_bb (perhaps export
that one from reassoc), thus when you turn that into a switch starting at
the end of first bb, you can just throw away all the non-side-effects basic
blocks.  Or do you want instead allow other stmts in those bbs and check
that either it is consumed all in the same bb, or it is consumed in the bbs
dominated by the bb that the case label for the particular case would be
added for, and sink the statements to that bb?
> 
>   <bb 4> :
>   index2.1_1 = (unsigned int) index2_16(D);
>   _2 = index2.1_1 + 4294967196;
>   _3 = _2 <= 100;
>   _5 = index2.1_1 + 4294966996;
>   _6 = _5 <= 33;
>   _7 = _3 | _6;
>   if (_7 != 0)
>     goto <bb 5>; [INV]
>   else
>     goto <bb 6>; [INV]
> 
> As seen, all statements in this BB are used by the final _7 != 0 and it would
> be handy for me to identify all statements that should be hoisted.
> 
> Thoughts how can I achieve that?

	Jakub
Martin Liška Oct. 12, 2020, 1:01 p.m. UTC | #34
On 10/12/20 2:44 PM, Martin Liška wrote:
> On 10/7/20 10:00 AM, Richard Biener wrote:
>> As said I'd have a BB-local pass over BBs recording the index variable
>> and the range covered by the BBs gcond, plus recording how many excess
>> stmts there are for eventual code motion.
>>
>> Only after that BB-local pass start to group BBs in a walk from dominated to
>> dominating BBs looking for common indexes and building a case vector.
>>
>> The main thing is to avoid repeatedly analyzing BBs conditions (so the first
>> pass could be also a on-demand precompute thing) and making the
>> case vector build optimal.
> 
> I have a patch that does that using the infrastructure from tree-ssa-reassoc.
> Now I would like to implement the code hoisting. Am I right that we want
> something like:
> 
> if (index == C0)
>    goto BB_0;
> else
> {
>    BB1_to_hoist_stmts;
>    if (index == C1)
>      goto BB_1;
>    else
>    {
>      BB2_to_hoist_stmts;
>      if (index == C2)
>        goto BB_2;
>      else
>        goto default_BB;
>    }
> }
> 
> be converted into:
> 
> switch(index)
> {
>     case C0:
>       goto BB_0;
>     case C1:
>       BB1_to_hoist_stmts;
>       goto BB_1;
>     case C2:
>       BB1_to_hoist_stmts;
>       BB2_to_hoist_stmts;
>       goto BB_2;
>     else:
>       BB1_to_hoist_stmts;
>       BB2_to_hoist_stmts;
>       goto default_BB;
> }
> 
> ?

Reading again Richi's comment:

> ifcombine simply hoists any stmts without side-effects up the
> dominator tree and thus only requires BBs without side-effects
> (IIRC there's a predicate fn for that).

we likely want to hoist the statements "up" to the gswitch BB?

Martin

> 
> Thanks,
> Martin
Andrew MacLeod Oct. 14, 2020, 6:09 p.m. UTC | #35
On 10/12/20 8:39 AM, Martin Liška wrote:
> On 10/6/20 4:12 PM, Jakub Jelinek wrote:
>> On Tue, Oct 06, 2020 at 03:48:38PM +0200, Martin Liška wrote:
>>> On 10/6/20 9:47 AM, Richard Biener wrote:
>>>> But is it really extensible with the current implementation?  I 
>>>> doubt so.
>>>
>>> I must agree with the statement. So let's make the pass properly.
>>> I would need a help with the algorithm where I'm planning to do the 
>>> following
>>> steps:
>>>
>>> 1) for each BB ending with a gcond, parse index variable and it's VR;
>>>     I'll support:
>>>     a) index == 123 ([123, 123])
>>>     b) 1 <= index && index <= 9 ([1, 9])
>>>     c) index == 123 || index == 12345 ([123, 123] [12345, 12345])
>>>     d) index != 1 ([1, 1])
>>>     e) index != 1 && index != 5 ([1, 1] [5, 5])
>>
>> The fold_range_test created cases are essential to support, so
>> f) index - 123U < 456U ([123, 456+123])
>> g) (unsigned) index - 123U < 456U (ditto)
>> but the discovery should actually recurse on all of those forms, so 
>> it will
>> handle
>> (unsigned) index - 123U < 456U || (unsigned) index - 16384U <= 32711U
>> etc.
>> You can see what reassoc init_range_entry does and do something similar?
>
> All right, I started to use init_range_entry in combination with 
> linearize_expr_tree.
> One thing I have problem with is that linearize_expr_tree doesn't 
> properly mark
> all statements as visited for cases like:
>
>   <bb 4> :
>   index2.1_1 = (unsigned int) index2_16(D);
>   _2 = index2.1_1 + 4294967196;
>   _3 = _2 <= 100;
>   _5 = index2.1_1 + 4294966996;
>   _6 = _5 <= 33;
>   _7 = _3 | _6;
>   if (_7 != 0)
>     goto <bb 5>; [INV]
>   else
>     goto <bb 6>; [INV]
>
> As seen, all statements in this BB are used by the final _7 != 0 and 
> it would
> be handy for me to identify all statements that should be hoisted.

The ranger infrastructure includes definition chains for what can 
potentially have a range calculated on an outgoing edge.  It contains 
all the ssa-names defined in the block for which we have range-ops 
entries that allow us to potentially wind back thru a calculation.   ie, 
any name which is defined in the block whose value can be changed based 
on which edge is taken...


I created:

foo (int index)
{
  if (index - 123U < 456U || index - 16384U <= 32711U )
     foo (42);
}

the exports range list contains
  =========== BB 2 ============
index_9(D)      int VARYING
     <bb 2> :
     index.0_1 = (unsigned int) index_9(D);
     _2 = index.0_1 + 4294967173;
     _3 = _2 <= 455;
     _5 = index.0_1 + 4294950912;
     _6 = _5 <= 32711;
     _7 = _3 | _6;
     if (_7 != 0)
       goto <bb 3>; [INV]
     else
       goto <bb 4>; [INV]

2->3  (T) index.0_1 :   unsigned int [123, 578][16384, 49095]
2->3  (T) _7 :  _Bool [1, 1]
2->3  (T) index_9(D) :  int [123, 578][16384, 49095]
2->4  (F) index.0_1 :   unsigned int [0, 122][579, 16383][49096, +INF]
2->4  (F) _2 :  unsigned int [456, +INF]
2->4  (F) _3 :  _Bool [0, 0]
2->4  (F) _5 :  unsigned int [32712, +INF]
2->4  (F) _6 :  _Bool [0, 0]
2->4  (F) _7 :  _Bool [0, 0]
2->4  (F) index_9(D) :  int [-INF, 122][579, 16383][49096, +INF]

and importantly, the defchain structure which lists names which are used 
to define this name  looks like:

DUMPING GORI MAP
bb2    index.0_1 : index_9(D)
        _2 : index.0_1  index_9(D)
        _3 : index.0_1  _2  index_9(D)
        _5 : index.0_1  index_9(D)
        _6 : index.0_1  _5  index_9(D)
        _7 : index.0_1  _2  _3  _5  _6  index_9(D)
        exports: index.0_1  _2  _3  _5  _6  _7  index_9(D)


This indicates that if you are using _7 as the control name of the branch,

_7 : index.0_1  _2  _3  _5  _6  index_9(D)

is the list of names that _7 uses in its definition chain...and we can 
calculate ranges for.      index_9 is not defined in this BB, so it is 
considered an import.  you'd probably be looking for all the names in 
this list whose SSA_NAME_DEF_STMT is in this block.. That looks a lot 
like the list of statements you want to hoist.

Caveats are that
   1)  this is currently only used internally by the ranger, so there 
are some  minor warts that may currently limit its usefulness elsewhere
   2) its is limited to only processing statements for which we have 
range-ops understanding.    which means we know how to calculate ranges 
for the statement.  Perhaps this is also not an issue since if there are 
statements we cant generate a range for, perhaps you dont care.

This might be more ionfo than  you need, but also

   3) before the enxt stage 1 I plan to rework the GORI component, and I 
plan to split this into additional "parts"  in particualr, this entire 
export list will still exist, but there will be 3 subcomponents which 
form it:
        a)  control names :   These are booleans which contribute to the 
TRUE/FALSEness of the edge
        b) direct exports  : These are ssanames which are directly 
affected by relations on the edge.. Ie, the edge gives them a range
        c) calculable exports  : These are other ssa_names which can be 
calculated based on the direct exports. Ie, the direct export is used in 
calculating this value
for the above block,
   control names :  _7, _6 and _3
   direct exports : _5 and _2
   calculable exports : index.0_1 index_9(D)


I bring it up because as IM reworking those bits, we can take into 
account other requirements that might be needed that can make it useful 
other places. And by anaylzing the names that are common between any 
direct exports, you may find useful information.

Currently, the exports list is not exported from the ranger, nor is the 
gori map,  but that would be trivial to do.   You basically get a bitmap 
back..

The classes are not dependant on the ranger either, so you can roll your 
own if you wanted to experiment.  Since they are internal  they are 
currently located in  gimple-range-gori.cc.. its basically the gori_map 
class which tracks all this and uses the range_def_chain class to manage 
the definition chains.  I threw a number fo comments in there already.   
Its lazily evaluated as queries are made.

If you think there is something useful, we can move those classes into 
the gimple-range-gori.h header file and adjust the APIs as needed.




>
> Thoughts how can I achieve that?
> Thanks,
> Martin
>
Richard Biener Oct. 15, 2020, 12:38 p.m. UTC | #36
On Mon, Oct 12, 2020 at 3:02 PM Martin Liška <mliska@suse.cz> wrote:
>
> On 10/12/20 2:44 PM, Martin Liška wrote:
> > On 10/7/20 10:00 AM, Richard Biener wrote:
> >> As said I'd have a BB-local pass over BBs recording the index variable
> >> and the range covered by the BBs gcond, plus recording how many excess
> >> stmts there are for eventual code motion.
> >>
> >> Only after that BB-local pass start to group BBs in a walk from dominated to
> >> dominating BBs looking for common indexes and building a case vector.
> >>
> >> The main thing is to avoid repeatedly analyzing BBs conditions (so the first
> >> pass could be also a on-demand precompute thing) and making the
> >> case vector build optimal.
> >
> > I have a patch that does that using the infrastructure from tree-ssa-reassoc.
> > Now I would like to implement the code hoisting. Am I right that we want
> > something like:
> >
> > if (index == C0)
> >    goto BB_0;
> > else
> > {
> >    BB1_to_hoist_stmts;
> >    if (index == C1)
> >      goto BB_1;
> >    else
> >    {
> >      BB2_to_hoist_stmts;
> >      if (index == C2)
> >        goto BB_2;
> >      else
> >        goto default_BB;
> >    }
> > }
> >
> > be converted into:
> >
> > switch(index)
> > {
> >     case C0:
> >       goto BB_0;
> >     case C1:
> >       BB1_to_hoist_stmts;
> >       goto BB_1;
> >     case C2:
> >       BB1_to_hoist_stmts;
> >       BB2_to_hoist_stmts;
> >       goto BB_2;
> >     else:
> >       BB1_to_hoist_stmts;
> >       BB2_to_hoist_stmts;
> >       goto default_BB;
> > }
> >
> > ?
>
> Reading again Richi's comment:
>
> > ifcombine simply hoists any stmts without side-effects up the
> > dominator tree and thus only requires BBs without side-effects
> > (IIRC there's a predicate fn for that).
>
> we likely want to hoist the statements "up" to the gswitch BB?

Yes.  code sinking later will sink what can be sunk.

> Martin
>
> >
> > Thanks,
> > Martin
>
diff mbox series

Patch

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 035b58f50c0..0d92347ad9b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1525,6 +1525,7 @@  OBJS = \
 	tree-eh.o \
 	tree-emutls.o \
 	tree-if-conv.o \
+	tree-if-to-switch.o \
 	tree-inline.o \
 	tree-into-ssa.o \
 	tree-iterator.o \
diff --git a/gcc/common.opt b/gcc/common.opt
index cc279f411d7..671b2a99391 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -2649,6 +2649,10 @@  ftree-switch-conversion
 Common Report Var(flag_tree_switch_conversion) Optimization
 Perform conversions of switch initializations.
 
+ftree-if-to-switch
+Common Report Var(flag_tree_if_to_switch) Optimization
+Perform conversions of if-elseif chain into a switch statement.
+
 ftree-dce
 Common Report Var(flag_tree_dce) Optimization
 Enable SSA dead code elimination optimization on trees.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index faa7fa95a0e..125b34e7f43 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -478,7 +478,7 @@  Objective-C and Objective-C++ Dialects}.
 -fthread-jumps  -ftracer  -ftree-bit-ccp @gol
 -ftree-builtin-call-dce  -ftree-ccp  -ftree-ch @gol
 -ftree-coalesce-vars  -ftree-copy-prop  -ftree-dce  -ftree-dominator-opts @gol
--ftree-dse  -ftree-forwprop  -ftree-fre  -fcode-hoisting @gol
+-ftree-dse  -ftree-forwprop  -ftree-fre -ftree-if-to-switch -fcode-hoisting @gol
 -ftree-loop-if-convert  -ftree-loop-im @gol
 -ftree-phiprop  -ftree-loop-distribution  -ftree-loop-distribute-patterns @gol
 -ftree-loop-ivcanon  -ftree-loop-linear  -ftree-loop-optimize @gol
@@ -8443,6 +8443,7 @@  also turns on the following optimization flags:
 -fstrict-aliasing @gol
 -fthread-jumps @gol
 -ftree-builtin-call-dce @gol
+-ftree-if-to-switch @gol
 -ftree-pre @gol
 -ftree-switch-conversion  -ftree-tail-merge @gol
 -ftree-vrp}
@@ -9628,6 +9629,13 @@  Perform conversion of simple initializations in a switch to
 initializations from a scalar array.  This flag is enabled by default
 at @option{-O2} and higher.
 
+@item -ftree-if-to-switch
+@opindex ftree-if-to-switch
+Perform conversion of an if cascade into a switch statement.
+The transformation can help to produce a faster code for
+the switch statement.  This flag is enabled by default
+at @option{-O2} and higher.
+
 @item -ftree-tail-merge
 @opindex ftree-tail-merge
 Look for identical code sequences.  When found, replace one with a jump to the
diff --git a/gcc/opts.c b/gcc/opts.c
index 10b9f108f8d..f781cfd5709 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -524,6 +524,7 @@  static const struct default_options default_options_table[] =
     { OPT_LEVELS_2_PLUS, OPT_fthread_jumps, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_pre, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_switch_conversion, NULL, 1 },
+    { OPT_LEVELS_2_PLUS, OPT_ftree_if_to_switch, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_tail_merge, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_vrp, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_CHEAP },
diff --git a/gcc/passes.def b/gcc/passes.def
index 798a391bd35..2bd2c348fb3 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -59,6 +59,7 @@  along with GCC; see the file COPYING3.  If not see
       NEXT_PASS (pass_early_warn_uninitialized);
       NEXT_PASS (pass_ubsan);
       NEXT_PASS (pass_nothrow);
+      NEXT_PASS (pass_if_to_switch);
       NEXT_PASS (pass_rebuild_cgraph_edges);
   POP_INSERT_PASSES ()
 
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..bcb8ef2a160
--- /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 conditions \\(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..316e772ec29
--- /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 5 conditions \\(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..fd07d909a3c
--- /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 5 conditions \\(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..4e047505a2b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.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 == 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..acb8b4b1211
--- /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 8 conditions \\(5 BBs\\) transformed into a switch statement." "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
index 944362ad076..0d4411fecf7 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-tree-if-to-switch" } */
 /* { dg-additional-options "-mbranch-cost=2" { target branch_cost } } */
 
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
index db0ce4c8463..d52860fa2f4 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
@@ -1,6 +1,6 @@ 
 /* { dg-do run { target { ! "m68k*-*-* mmix*-*-* bfin*-*-* v850*-*-* moxie*-*-* cris*-*-* m32c*-*-* fr30*-*-* mcore*-*-* powerpc*-*-* xtensa*-*-* hppa*-*-* nios2*-*-* or1k-*-*-* pru*-*-*"} } } */
 
-/* { 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-tree-if-to-switch" } */
 /* { dg-additional-options "-mbranch-cost=2" { target branch_cost } } */
 
 int test (int a, int b, int c)
diff --git a/gcc/timevar.def b/gcc/timevar.def
index 357fcfd65c5..20ea20a6178 100644
--- a/gcc/timevar.def
+++ b/gcc/timevar.def
@@ -290,6 +290,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-if-to-switch.c b/gcc/tree-if-to-switch.c
new file mode 100644
index 00000000000..43984b6b7e4
--- /dev/null
+++ b/gcc/tree-if-to-switch.c
@@ -0,0 +1,611 @@ 
+/* If-elseif-else to switch conversion pass
+   Copyright (C) 2019 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/>.  */
+
+#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 "domwalk.h"
+#include "tree-cfgcleanup.h"
+#include "params.h"
+#include "alias.h"
+#include "tree-ssa-loop.h"
+#include "diagnostic.h"
+#include "cfghooks.h"
+#include "tree-into-ssa.h"
+#include "cfganal.h"
+
+/* Tuple that holds minimum and maximum values in a case.  */
+
+struct case_range
+{
+  /* Default constructor.  */
+  case_range ():
+    m_min (NULL_TREE), m_max (NULL_TREE)
+  {}
+
+  /* Minimum case value.  */
+  tree m_min;
+  /* Maximum case value.  */
+  tree m_max;
+};
+
+/* One entry of a if chain.  */
+
+struct if_chain_entry
+{
+  /* Constructor.  */
+  if_chain_entry (basic_block bb, edge true_edge, edge false_edge)
+    : m_case_values (), m_bb (bb),
+      m_true_edge (true_edge), m_false_edge (false_edge)
+  {
+    m_case_values.create (2);
+  }
+
+  /* Vector of at maximum 2 case ranges.  */
+  vec<case_range> m_case_values;
+  /* Basic block of the original condition.  */
+  basic_block m_bb;
+  /* True edge of the gimple condition.  */
+  edge m_true_edge;
+  /* False edge of the gimple condition.  */
+  edge m_false_edge;
+};
+
+/* Master structure for one if to switch conversion candidate.  */
+
+struct if_chain
+{
+  /* Default constructor.  */
+  if_chain():
+    m_first_condition (NULL), m_index (NULL_TREE), m_entries ()
+  {
+    m_entries.create (2);
+  }
+
+  /* Set index and check that it is not a different one.  */
+  bool set_and_check_index (tree index);
+
+  /* Verify that all case ranges do not overlap.  */
+  bool check_non_overlapping_cases ();
+
+  /* First condition of the chain.  */
+  gcond *m_first_condition;
+  /* Switch index.  */
+  tree m_index;
+  /* If chain entries.  */
+  vec<if_chain_entry> m_entries;
+};
+
+bool
+if_chain::set_and_check_index (tree index)
+{
+  if (TREE_CODE (index) != SSA_NAME || !INTEGRAL_TYPE_P (TREE_TYPE (index)))
+    return false;
+
+  if (m_index == NULL)
+    m_index = index;
+
+  return index == m_index;
+}
+
+/* Compare two case ranges by minimum value.  */
+
+static int
+range_cmp (const void *a, const void *b)
+{
+  const case_range *cr1 = *(const case_range * const *) a;
+  const case_range *cr2 = *(const case_range * const *) b;
+
+  return tree_int_cst_compare (cr1->m_min, cr2->m_min);
+}
+
+bool
+if_chain::check_non_overlapping_cases ()
+{
+  auto_vec<case_range *> all_ranges;
+  for (unsigned i = 0; i < m_entries.length (); i++)
+    for (unsigned j =0; j < m_entries[i].m_case_values.length (); j++)
+      all_ranges.safe_push (&m_entries[i].m_case_values[j]);
+
+  all_ranges.qsort (range_cmp);
+
+  for (unsigned i = 0; i < all_ranges.length () - 1; i++)
+    {
+      case_range *left = all_ranges[i];
+      case_range *right = all_ranges[i + 1];
+      if (tree_int_cst_le (left->m_min, right->m_min)
+	  && tree_int_cst_le (right->m_min, left->m_max))
+	return false;
+    }
+
+  return true;
+}
+
+/* DOM walker for if to switch conversion.  */
+
+class if_dom_walker : public dom_walker
+{
+public:
+  if_dom_walker (cdi_direction direction)
+    : dom_walker (direction), all_candidates (), m_visited_bbs ()
+  {}
+
+  virtual edge before_dom_children (basic_block);
+
+  /* List of all found candidates.  */
+  auto_vec<if_chain> all_candidates;
+
+private:
+  /* Bitmap of all visited basic blocks.  */
+  auto_bitmap m_visited_bbs;
+};
+
+/* Build case label with MIN and MAX values of a given basic block DEST.  */
+
+static tree
+build_case_label (tree min, tree max, basic_block dest)
+{
+  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));
+}
+
+/* Record all original phi arguments into PHI_MAX.  Do it for
+   a given edge E.  */
+
+static void
+record_phi_arguments (hash_map<basic_block, vec<tree> > *phi_map, edge e)
+{
+  if (phi_map->get (e->dest) == NULL)
+    {
+      vec<tree> phi_arguments;
+      phi_arguments.create (4);
+      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)))
+	    phi_arguments.safe_push (PHI_ARG_DEF_FROM_EDGE (phi, e));
+	}
+
+      phi_map->put (e->dest, phi_arguments);
+    }
+}
+
+/* Convert a given if CHAIN into a switch GIMPLE statement.  */
+
+static void
+convert_if_conditions_to_switch (if_chain &chain)
+{
+  auto_vec<tree> labels;
+  if_chain_entry first_cond = chain.m_entries[0];
+
+  unsigned entries = chain.m_entries.length ();
+  edge default_edge = chain.m_entries[entries - 1].m_false_edge;
+  basic_block default_bb = default_edge->dest;
+
+  /* Recond all PHI nodes that will later be fixed.  */
+  hash_map<basic_block, vec<tree> > phi_map;
+  for (unsigned i = 0; i < chain.m_entries.length (); i++)
+    record_phi_arguments (&phi_map, chain.m_entries[i].m_true_edge);
+  record_phi_arguments (&phi_map, chain.m_entries[entries - 1].m_false_edge);
+
+  for (unsigned i = 0; i < chain.m_entries.length (); i++)
+    {
+      if_chain_entry entry = chain.m_entries[i];
+
+      basic_block case_bb = entry.m_true_edge->dest;
+
+      for (unsigned j = 0; j < entry.m_case_values.length (); j++)
+	labels.safe_push (build_case_label (entry.m_case_values[j].m_min,
+					    entry.m_case_values[j].m_max,
+					    case_bb));
+      default_bb = entry.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 (entry.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 (chain.m_index,
+			   build_case_label (NULL_TREE, NULL_TREE, default_bb),
+			   labels);
+
+  gimple_stmt_iterator gsi = gsi_for_stmt (chain.m_first_condition);
+  gsi_remove (&gsi, true);
+  gsi_insert_before (&gsi, s, GSI_NEW_STMT);
+
+  /* Fill up missing PHI node arguments.  */
+  for (hash_map<basic_block, vec<tree> >::iterator it = phi_map.begin ();
+       it != phi_map.end (); ++it)
+    {
+      edge e = find_edge (first_cond.m_bb, (*it).first);
+      unsigned i = 0;
+      for (gphi_iterator gsi = gsi_start_phis ((*it).first); !gsi_end_p (gsi);
+	   gsi_next (&gsi))
+	{
+	  gphi *phi = gsi.phi ();
+	  if (!virtual_operand_p (gimple_phi_result (phi)))
+	    add_phi_arg (phi, (*it).second[i++], e, UNKNOWN_LOCATION);
+	}
+    }
+}
+
+static bool
+extract_case_from_stmt (tree rhs1, tree rhs2, tree_code code, tree *index,
+			case_range *range, unsigned *visited_stmt_count)
+{
+  if (code == EQ_EXPR)
+    {
+      /* Handle situation 2a:
+	 _1 = aChar_8(D) == 1;  */
+      *index = rhs1;
+      range->m_min = rhs2;
+      range->m_max = range->m_min;
+
+      if (TREE_CODE (rhs2) != INTEGER_CST)
+	return false;
+
+      *visited_stmt_count += 1;
+      return true;
+    }
+  else if (code == LE_EXPR)
+    {
+      /* Handle situation 2b:
+	 aChar.1_1 = (unsigned int) aChar_10(D);
+	 _2 = aChar.1_1 + 4294967287;
+	 _3 = _2 <= 1;  */
+      tree ssa = rhs1;
+      tree range_size = rhs2;
+      if (TREE_CODE (ssa) != SSA_NAME
+	  || TREE_CODE (range_size) != INTEGER_CST)
+	return false;
+
+      gassign *subtraction = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (ssa));
+      if (subtraction == NULL
+	  || gimple_assign_rhs_code (subtraction) != PLUS_EXPR)
+	return false;
+
+      tree casted = gimple_assign_rhs1 (subtraction);
+      tree min = gimple_assign_rhs2 (subtraction);
+      if (TREE_CODE (casted) != SSA_NAME
+	  || TREE_CODE (min) != INTEGER_CST)
+	return false;
+
+      if (!SSA_NAME_IS_DEFAULT_DEF (casted))
+	{
+	  gassign *to_unsigned
+	    = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (casted));
+	  if (to_unsigned == NULL
+	      || !gimple_assign_unary_nop_p (to_unsigned)
+	      || !TYPE_UNSIGNED (TREE_TYPE (casted)))
+	    return false;
+	  *index = gimple_assign_rhs1 (to_unsigned);
+	  ++(*visited_stmt_count);
+	}
+      else
+	*index = casted;
+
+      tree type = TREE_TYPE (*index);
+      tree range_min = fold_convert (type, const_unop (NEGATE_EXPR, type, min));
+
+      range->m_min = range_min;
+      range->m_max = const_binop (PLUS_EXPR, TREE_TYPE (*index),
+				  range_min, fold_convert (type, range_size));
+      *visited_stmt_count += 2;
+      return true;
+    }
+  else
+    return false;
+}
+
+edge
+if_dom_walker::before_dom_children (basic_block bb)
+{
+  if_chain chain;
+  unsigned total_case_values = 0;
+
+  while (true)
+    {
+      bool first = chain.m_entries.is_empty ();
+      if (bitmap_bit_p (m_visited_bbs, bb->index))
+	break;
+      bitmap_set_bit (m_visited_bbs, bb->index);
+
+      gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
+      if (gsi_end_p (gsi))
+	break;
+
+      if (!chain.m_entries.is_empty () && EDGE_COUNT (bb->preds) != 1)
+	break;
+
+      gcond *cond = dyn_cast<gcond *> (gsi_stmt (gsi));
+      if (cond == NULL)
+	break;
+
+      if (first)
+	chain.m_first_condition = cond;
+
+      edge true_edge, false_edge;
+      extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
+
+      if_chain_entry entry (bb, true_edge, false_edge);
+
+      /* Current we support following patterns (situations):
+
+	 1) if condition with equal operation:
+
+	    <bb 2> :
+	    if (argc_8(D) == 1)
+	      goto <bb 3>; [INV]
+	    else
+	      goto <bb 4>; [INV]
+
+	 2) if condition with a range check:
+
+	    <bb 3> :
+	    _4 = c_13(D) + 198;
+	    if (_4 <= 1)
+	      goto <bb 7>; [INV]
+	    else
+	      goto <bb 4>; [INV]
+
+	 3) mixture of 1) and 2) with a or condition:
+
+	    <bb 2> :
+	    _1 = aChar_8(D) == 1;
+	    _2 = aChar_8(D) == 10;
+	    _3 = _1 | _2;
+	    if (_3 != 0)
+	      goto <bb 5>; [INV]
+	    else
+	      goto <bb 3>; [INV]
+
+	    or:
+
+	    <bb 2> :
+	    aChar.1_1 = (unsigned int) aChar_10(D);
+	    _2 = aChar.1_1 + 4294967287;
+	    _3 = _2 <= 1;
+	    _4 = aChar_10(D) == 12;
+	    _5 = _3 | _4;
+	    if (_5 != 0)
+	      goto <bb 5>; [INV]
+	    else
+	      goto <bb 3>; [INV]
+		*/
+
+      tree lhs = gimple_cond_lhs (cond);
+      tree rhs = gimple_cond_rhs (cond);
+      tree_code code = gimple_cond_code (cond);
+      unsigned visited_stmt_count = 0;
+      unsigned case_values = 0;
+      tree index;
+
+      /* Situation 1.  */
+      if (code == EQ_EXPR)
+	{
+	  case_range range;
+	  if (!extract_case_from_stmt (lhs, rhs, code, &index, &range,
+				       &visited_stmt_count))
+	    break;
+	  if (!chain.set_and_check_index (index))
+	    break;
+	  entry.m_case_values.safe_push (range);
+	  case_values = 1;
+	}
+      /* Situation 2.  */
+      else if (code == LE_EXPR)
+	{
+	  case_range range;
+	  if (!extract_case_from_stmt (lhs, rhs, code, &index, &range,
+				       &visited_stmt_count))
+	    break;
+	  if (!chain.set_and_check_index (index))
+	    break;
+	  entry.m_case_values.safe_push (range);
+	  case_values = 1;
+	}
+      /* Situation 3.  */
+      else if (code == NE_EXPR
+	       && integer_zerop (rhs)
+	       && TREE_CODE (lhs) == SSA_NAME
+	       && TREE_CODE (TREE_TYPE (lhs)) == BOOLEAN_TYPE)
+	{
+	  gassign *def = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (lhs));
+	  if (def == NULL
+	      || gimple_assign_rhs_code (def) != BIT_IOR_EXPR
+	      || gimple_bb (def) != bb)
+	    break;
+
+	  tree rhs1 = gimple_assign_rhs1 (def);
+	  tree rhs2 = gimple_assign_rhs2 (def);
+	  if (TREE_CODE (rhs1) != SSA_NAME || TREE_CODE (rhs2) != SSA_NAME)
+	    break;
+
+	  gassign *def1 = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (rhs1));
+	  gassign *def2 = dyn_cast<gassign *> (SSA_NAME_DEF_STMT (rhs2));
+	  if (def1 == NULL
+	      || def2 == NULL
+	      || def1 == def2
+	      || gimple_bb (def1) != bb
+	      || gimple_bb (def2) != bb)
+	    break;
+
+	  case_range range1;
+	  if (!extract_case_from_stmt (gimple_assign_rhs1 (def1),
+				       gimple_assign_rhs2 (def1),
+				       gimple_assign_rhs_code (def1),
+				       &index, &range1,
+				       &visited_stmt_count))
+	    break;
+	  rhs = gimple_assign_rhs2 (def1);
+	  if (!chain.set_and_check_index (index))
+	    break;
+	  entry.m_case_values.safe_push (range1);
+
+	  case_range range2;
+	  if (!extract_case_from_stmt (gimple_assign_rhs1 (def2),
+				       gimple_assign_rhs2 (def2),
+				       gimple_assign_rhs_code (def2),
+				       &index, &range2,
+				       &visited_stmt_count))
+	    break;
+	  rhs = gimple_assign_rhs2 (def2);
+	  if (!chain.set_and_check_index (index))
+	    break;
+	  entry.m_case_values.safe_push (range2);
+	  case_values = 2;
+	  visited_stmt_count += 2;
+	}
+      else
+	break;
+
+      /* If it's not the first condition, then we need a BB without
+	 any statements.  */
+      if (!first)
+	{
+	  unsigned stmt_count = 0;
+	  for (gimple_stmt_iterator gsi = gsi_start_nondebug_bb (bb);
+	       !gsi_end_p (gsi); gsi_next_nondebug (&gsi))
+	    ++stmt_count;
+
+	  if (stmt_count - visited_stmt_count != 0)
+	    break;
+	}
+
+      total_case_values += case_values;
+      chain.m_entries.safe_push (entry);
+
+      /* Follow if-elseif-elseif chain.  */
+      bb = false_edge->dest;
+    }
+
+  if (total_case_values >= 3
+      && chain.check_non_overlapping_cases ())
+    {
+      if (dump_file)
+	{
+	  expanded_location loc
+	    = expand_location (gimple_location (chain.m_first_condition));
+	  fprintf (dump_file, "Condition chain (at %s:%d) with %d conditions "
+		   "(%d BBs) transformed into a switch statement.\n",
+		   loc.file, loc.line, total_case_values,
+		   chain.m_entries.length ());
+	}
+
+      all_candidates.safe_push (chain);
+    }
+
+  return NULL;
+}
+
+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 flag_tree_if_to_switch != 0; }
+  virtual unsigned int execute (function *);
+
+}; // class pass_if_to_switch
+
+unsigned int
+pass_if_to_switch::execute (function *fun)
+{
+  /* We might consider making this a property of each pass so that it
+     can be [re]computed on an as-needed basis.  Particularly since
+     this pass could be seen as an extension of DCE which needs post
+     dominators.  */
+  calculate_dominance_info (CDI_DOMINATORS);
+
+  /* Dead store elimination is fundamentally a walk of the post-dominator
+     tree and a backwards walk of statements within each block.  */
+  if_dom_walker walker (CDI_DOMINATORS);
+  walker.walk (fun->cfg->x_entry_block_ptr);
+
+  for (unsigned i = 0; i < walker.all_candidates.length (); i++)
+    convert_if_conditions_to_switch (walker.all_candidates[i]);
+
+  /* For now, just wipe the dominator information.  */
+  free_dominance_info (CDI_DOMINATORS);
+
+  mark_virtual_operands_for_renaming (cfun);
+
+  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/tree-pass.h b/gcc/tree-pass.h
index a987661530e..84c498cb26e 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);