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.