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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2016-07-15
   Target Milestone|---                         |7.0
            Summary|wrong code (SIGFPE) at -O1  |[7 Regression] wrong code
                   |and above on                |(SIGFPE) at -O1 and above
                   |x86_64-linux-gnu (in both   |on x86_64-linux-gnu (in
                   |32-bit and 64-bit modes)    |both 32-bit and 64-bit
                   |                            |modes)
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Mine.

2016-07-13  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/24574
        * tree-ssa-phiopt.c (absorbing_element_p): Pass in argument
        position and add shift, rotate, divison and modulo support
        for left zero.
        (value_replacement): Pass in argument position to absorbing_element_p.

this didn't consider that we might divide/modulo by zero and have that guarded
(implicitely) by a guard on the left-hand value.  In the testcase it's quite
explicit though:

  if (c_5 == 0)
    goto <bb 4>;
  else
    goto <bb 3>;

  <bb 3>:
  _2 = c_5 % c_5;

  <bb 4>:
  # _6 = PHI <0(2), _2(3)>

Reply via email to