https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100998
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|c |middle-end
Keywords| |wrong-code
Last reconfirmed| |2021-06-09
Ever confirmed|0 |1
Status|UNCONFIRMED |WAITING
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So the tree level looks fine for me:
_1 = (unsigned int) i_5(D);
_2 = -_1;
_9 = (unsigned int) m_6(D);
_3 = _2 & _9;
_4 = _3 - _1;
_7 = (int) _4;
---- CUT ----
This is for:
int f (long int m, long int i)
{
return ((m & ~(i - 1)) - i);
}
---- CUT ----
The assembly produced for both x86_64 and aarch64 looks correct.
What target is this on?