https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63321
--- Comment #8 from Oleg Endo <olegendo at gcc dot gnu.org> ---
(In reply to Oleg Endo from comment #1)
>
> void test2_2 (unsigned int x, unsigned int* y)
> {
> unsigned int xx = x >> 1;
> unsigned int p = x & 1;
> if (p != 0)
> foo (xx);
> }
>
And of course also in the opposite direction:
void test4_2 (unsigned int x)
{
if (x & (1 << 31))
((void(*)(void))(x << 1)) ();
}
