https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104530
Bug ID: 104530
Summary: [12 Regression] Dead Code Elimination Regression at
-O3 (trunk vs. 11.2.0)
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: theodort at inf dot ethz.ch
Target Milestone: ---
Dead Code Elimination Regression at -O3 (trunk vs.
a7fede6704dd207fb32b97bc30f945acc7b953c5) 138751
---------------
cat case.c #138751
void foo(void);
static int a, *b = &a, c, d = 1;
int main() {
c = 0 == b;
a = *b;
if (c % d)
for (; d; --d)
foo();
b = 0;
}
gcc-58aeb75d4097010ad9bb72b964265b18ab284f93 (trunk) -O3 can not eliminate foo
but gcc-11.2.0 -O3 can.
gcc-58aeb75d4097010ad9bb72b964265b18ab284f93 (trunk) -O3 -S -o /dev/stdout
case.c
--------- OUTPUT ---------
main:
.LFB0:
.cfi_startproc
movq b(%rip), %rax
testq %rax, %rax
movl (%rax), %edx
sete %al
movzbl %al, %eax
movl %edx, a(%rip)
cltd
idivl d(%rip)
testl %edx, %edx
je .L9
pushq %rax
.cfi_def_cfa_offset 16
.p2align 4,,10
.p2align 3
.L3:
call foo
subl $1, d(%rip)
jne .L3
xorl %ecx, %ecx
xorl %eax, %eax
movq %rcx, b(%rip)
popq %rsi
.cfi_def_cfa_offset 8
ret
.L9:
xorl %edx, %edx
xorl %eax, %eax
movq %rdx, b(%rip)
ret
---------- END OUTPUT ---------
gcc-11.2.0 -O3 -S -o /dev/stdout case.c
--------- OUTPUT ---------
main:
.LFB0:
.cfi_startproc
movq b(%rip), %rax
movq $0, b(%rip)
movl (%rax), %eax
movl %eax, a(%rip)
xorl %eax, %eax
ret
---------- END OUTPUT ---------
Bisects to:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=c6bb1db76b3ac127aff7dacf391fc1798a94bb7d
----- Build information -----
----- 58aeb75d4097010ad9bb72b964265b18ab284f93 (trunk)
Target: x86_64-pc-linux-gnu
Configured with: ../configure --disable-multilib --disable-bootstrap
--enable-languages=c,c++
--prefix=/zdata/compiler_cache/gcc-58aeb75d4097010ad9bb72b964265b18ab284f93
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.0.1 20220213 (experimental) (GCC)
----- releases/gcc-11.2.0
Target: x86_64-pc-linux-gnu
Configured with: ../configure --disable-multilib --disable-bootstrap
--enable-languages=c,c++
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.0.0 (GCC)