在 2023/1/9 19:48, Thomas Koenig via Gcc 写道:
On 09.01.23 12:35, Stefan Kanthak wrote:20 superfluous instructions of the total 102 instructions!The proper place for bug reports is https://gcc.gnu.org/bugzilla/ . Feel free to submit these cases there.
Created https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108341, although I'm not sure whether it's related to this issue.
Given
```
extern int r;
int
bz(int value)
{
r = __builtin_ctz(value);
return value != 0; // always true
}
```
`value` is passed to `__builtin_ctz` and GCC should assume it can't be zero, otherwise the behavior
is undefined. However GCC fails to optimize it and produces:
```
bz:
endbr64
xor eax, eax
rep bsf eax, edi
mov DWORD PTR r[rip], eax
xor eax, eax
test edi, edi
setne al
ret
```
--
Best regards,
LIU Hao
OpenPGP_signature
Description: OpenPGP digital signature
