[Bug tree-optimization/93013] PPC: optimization around modulo leads to incorrect result

wschmidt at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 19 19:32:00 GMT 2019


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

Bill Schmidt <wschmidt at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-12-19
                 CC|                            |meissner at gcc dot gnu.org,
                   |                            |segher at gcc dot gnu.org
          Component|c++                         |tree-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
The branch is removed by the middle end, as the optimized dump shows:

;; Function mod (_Z3modiiRi, funcdef_no=0, decl_uid=3256, cgraph_uid=1,
symbol_\
order=0)

mod (int x, int y, int & z)
{
  int _1;
  bool _3;
  int _9;

  <bb 2> [local count: 1073741824]:
  _1 = x_4(D) % y_5(D);
  *z_7(D) = _1;
  _3 = y_5(D) == 0;
  _9 = (int) _3;
  return _9;

}

On POWER9 we will get the expected answer given the use of the modsw
instruction.  For POWER8 we get the codegen with divw which is indeed undefined
for these inputs.  I guess the issue would be in the expander for mod<mode>3.

Confirmed.


More information about the Gcc-bugs mailing list