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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2018-03-15
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
   Target Milestone|---                         |8.0
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
This goes wrong during gimplification:

i1 (int w3, int n9)
{
  int D.1962;
  unsigned int iftmp.0;

  if (n9 == 0) goto <D.1964>; else goto <D.1965>;
  <D.1964>:
  _1 = 1.0e+0 + 1.000000000000000055511151231257827021181583404541015625e-1;
  _2 = (long int) _1;
  _3 = (unsigned int) _2;
  iftmp.0 = _3 + 4294967295;
  goto <D.1966>;
  <D.1965>:
  iftmp.0 = (unsigned int) _2;
  <D.1966>:
  D.1962 = w3 >> iftmp.0;
  return D.1962;

there's an odd jump-around here.  GENERIC arrives here with

  return w3 >> (long int) -(n9 == 0) + (long int) (1.0e+0 +
1.000000000000000055511151231257827021181583404541015625e-1);

so it's probably some folding during gimplification that triggers this.

Reply via email to