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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |uros at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that this is done usually during the ce* passes in a target
mov<mode>cc expander, but unfortunately that expander doesn't know if the
comparison operand has just a single bit set (and which one).  For that query
the most natural predicate would be nonzero_bits, but only the combiner pass
has infrastructure to track non-zero bits in between different instructions.
The ce* passes don't even compute a reaching defs df problem nor ud chains,
though perhaps the ce* pass just could walk a few insns backwards looking for
unconditional setter of the pseudo in the comparison (it would only work then
if the masking is done right before comparison though).

Reply via email to