[Bug tree-optimization/88841] Missed optimization transforming cascading ||s into a bit select

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 15 09:10:00 GMT 2019


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-01-15
          Component|other                       |tree-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue is the tests are split in different ways.

isspc_1 (char c)
{
  bool D.2304;
  bool iftmp.0;

  _1 = c == 32;
  _2 = c == 10;
  _3 = _1 | _2;
  if (_3 != 0) goto <D.2306>; else goto <D.2309>;
  <D.2309>:
  _4 = c == 13;
  _5 = c == 9;
  _6 = _4 | _5;
  if (_6 != 0) goto <D.2306>; else goto <D.2307>;

vs.

isspc_2 (char c)
{
  bool D.2311;
  bool iftmp.1;

  _1 = c == 32;
  _2 = c == 13;
  _3 = _1 | _2;
  if (_3 != 0) goto <D.2313>; else goto <D.2316>;
  <D.2316>:
  c.2_4 = (unsigned char) c;
  _5 = c.2_4 + 247;
  if (_5 <= 1) goto <D.2313>; else goto <D.2314>;


More information about the Gcc-bugs mailing list