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

--- Comment #6 from Daniel Henrique Barboza <daniel.barboza at oss dot 
qualcomm.com> ---
I just made tests with what Andrew suggested in the thread mentioned above,
i.e:

popcount (y & -y) -> (conversion_type)y != 0

And I did with Roger's suggestion as well, removing the TYPE_UNSIGNED
constraint:

popcount (y & -y) -> (conversion_type)-y != 0


They're both equal as far as 'optimized' output goes and in a native x86
bootstrap test they both look the same (no regressions).

I think Roger made good points w.r.t keeping any potential traps/UBs by doing
the comparison with "-y", delegating to other match.pd rules whether "-y != 0"
can become "y != 0". I'll go with his idea for the next version. And this time
I believe a more detailed commit msg is in order to explain why we're rocking a
comparison with "-y".

Reply via email to