Optimizer does not take advantage of -value == ~(value - 1)
#47903
Labels
bugzilla
Issues migrated from bugzilla
-value == ~(value - 1)
#47903
Extended Description
Test case:
long f(long align) {
return (align - 1) & -align;
}
long g(long align) {
return (align - 1) & ~(align - 1);
}
int h(long align) {
return -align == ~(align - 1);
}
Generated assembly:
f:
leaq -1(%rdi), %rax
negq %rdi
andq %rdi, %rax
retq
g:
xorl %eax, %eax
retq
h:
movl $1, %eax
retq
The text was updated successfully, but these errors were encountered: