https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86263

--- Comment #7 from Tom de Vries <vries at gcc dot gnu.org> ---
The pass_lower_switch<O0> has no effect. It generates a switch expansion at
bb12, but the function still uses the switch at bb10:
...
(gdb) call debug_function (cfun.decl, 0)
_dcvt (void * ptr, char type, int opt, int val)
{
  char D.1454;
  int _1;
  char _12;
  unsigned int _13;
  unsigned int _14;
  _Bool _15;
  long unsigned int _16;
  long unsigned int _17;
  _Bool _18;
  long unsigned int _19;
  _Bool _20;
  long unsigned int _21;
  _Bool _22;

  <bb 2> :
  _1 = (int) type_3(D);

  <bb 11> :
  goto <bb 10>; [100.00%]

  <bb 12> :
  _13 = (unsigned int) _1;
  _14 = _13 + 4294967227;
  _15 = _14 > 34;
  if (_15 != 0)
    goto <bb 8>; [INV]
  else
    goto <bb 13>; [INV]

  <bb 13> :
  _16 = 1 << _14;
  _17 = _16 & 4294967297;
  _18 = _17 != 0;
  if (_18 != 0)
    goto <bb 7>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 14> :
  _19 = _16 & 17179869188;
  _20 = _19 != 0;
  if (_20 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 15>; [INV]

  <bb 15> :
  _21 = _16 & 8589934594;
  _22 = _21 != 0;
  if (_22 != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 16>; [INV]

  <bb 16> :
  goto <bb 8>; [INV]

  <bb 10> :
  switch (_1) <default: <L8> [INV], case 69: <L6> [INV], case 70: <L0> [INV],
case 71: <L2> [INV], case 101: <L6> [INV], case 102: <L0> [INV], case 103: <L2>
[INV]>

  <bb 3> :
<L0>:
  f1 (ptr_5(D));
  goto <bb 8>; [INV]

  <bb 4> :
<L2>:
  if (opt_7(D) == 0)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  opt_8 = 1;

  <bb 6> :
  f2 (ptr_5(D));
  goto <bb 8>; [INV]

  <bb 7> :
<L6>:
  f3 (ptr_5(D));

  <bb 8> :
<L8>:
  _12 = (char) val_11(D);

  <bb 9> :
<L10>:
  return _12;

}
...

Reply via email to