https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113433
Bug ID: 113433
Summary: [12/13/14 Regression] Missed optimization for
redundancy computation elimination
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: 652023330028 at smail dot nju.edu.cn
Target Milestone: ---
Hello, we noticed that maybe there is a missed optimization for redundancy
computation elimination.
Different from PR 113265, This code worked as expected until GCC-12.
https://godbolt.org/z/nKh7zfsYn
int c,d,e;
void func(int y){
c=1-y;
d=0;
e=c/(d+(-c));
}
GCC (trunk):
func(int):
mov DWORD PTR d[rip], 0
mov eax, 1
sub eax, edi
sub edi, 1
cdq
mov DWORD PTR c[rip], eax
idiv edi
mov DWORD PTR e[rip], eax
ret
Expected code (GCC-11.4):
func(int):
mov DWORD PTR d[rip], 0
mov eax, 1
mov DWORD PTR e[rip], -1
sub eax, edi
mov DWORD PTR c[rip], eax
ret
Thank you very much for your time and effort! We look forward to hearing from
you.