[Bug rtl-optimization/80491] [6/7/8 Regression] Compiler regression for long-add case.

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 24 08:03:00 GMT 2017


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |x86_64-*-*, i?86-*-*
           Priority|P3                          |P2
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |5.4.1
            Version|unknown                     |7.0.1
           Keywords|                            |missed-optimization
   Last reconfirmed|                            |2017-04-24
     Ever confirmed|0                           |1
            Summary|Compiler regression for     |[6/7/8 Regression] Compiler
                   |long-add case.              |regression for long-add
                   |                            |case.
   Target Milestone|---                         |6.4
      Known to fail|                            |6.3.1, 7.0.1

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  With GCC 5 and earlier we expanded from

  <bb 2>:
  _3 = a_2(D)->low;
  _5 = b_4(D)->low;
  _6 = _3 + _5;
  _8 = a_2(D)->hi;
  _9 = b_4(D)->hi;
  _10 = _8 + _9;
  _11 = _3 > _6;
  _12 = (long unsigned int) _11;
  _13 = _10 + _12;
  MEM[(struct pair *)&D.2360] = _6;
  MEM[(struct pair *)&D.2360 + 8B] = _13;
  return D.2360;

while with GCC 6+ we now have

  <bb 2>:
  _3 = a_2(D)->low;
  _5 = b_4(D)->low;
  _15 = ADD_OVERFLOW (_3, _5);
  _6 = REALPART_EXPR <_15>;
  _16 = IMAGPART_EXPR <_15>;
  _7 = a_2(D)->hi;
  _8 = b_4(D)->hi;
  _9 = _7 + _8;
  _10 = _16 != 0;
  _11 = (long unsigned int) _10;
  _12 = _9 + _11;
  MEM[(struct pair *)&D.2306] = _6;
  MEM[(struct pair *)&D.2306 + 8B] = _12;
  return D.2306;

which somehow ends up in a jump for the _16 != 0 test.


More information about the Gcc-bugs mailing list