[Bug target/95529] Failure to reuse flags generated by TZCNT for cmovcc on BMI-capable targets

gabravier at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Jun 4 11:47:31 GMT 2020


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

Gabriel Ravier <gabravier at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Failure to reuse flags      |Failure to reuse flags
                   |generated by trailing zeros |generated by TZCNT for
                   |instruction for cmovcc      |cmovcc on BMI-capable
                   |                            |targets
         Resolution|WONTFIX                     |---
             Status|RESOLVED                    |UNCONFIRMED

--- Comment #3 from Gabriel Ravier <gabravier at gmail dot com> ---
Also, I misread your message, so I can see that LLVM doesn't seem to have
invalid behaviour (unless I misread it twice), but I don't think it should make
the bug report invalid altogether.

I've reopened the bug report and changed the name to make it clearer. GCC emits
this for -O3 -mbmi :

f(int):
  xor eax, eax
  mov edx, 24
  tzcnt eax, edi
  test edi, edi
  cmove eax, edx
  ret

LLVM emits this :

f(int): # @f(int)
  tzcnt ecx, edi
  mov eax, 24
  cmovae eax, ecx
  ret

If you believe that GCC shouldn't consider it safe to assume the processor is
BMI-capable when -mbmi is used (which seems rather odd but ok), feel free to
close this bug report again, otherwise I believe it should stay open.


More information about the Gcc-bugs mailing list