https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111003
Bug ID: 111003
Summary: [14 Regression] Dead Code Elimination Regression at
-O3 since r14-2161-g237e83e2158
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: scherrer.sv at gmail dot com
Target Milestone: ---
static int c, d, e, f;
static short g;
static int *h = &c;
void foo(void);
short(a)();
static unsigned b(unsigned char j, int l) { return j > l ? j : j << l; }
static int *i();
static void k(int j, unsigned char l) {
i();
g = f;
f = g;
for (; g;) {
int m;
d = a();
for (; d;) {
if (l)
if (!(j >= -639457069 && j <= -639457069))
if (m)
foo();
m = (10 != (l ^ b(j, 6))) < (0 > e);
}
}
}
static int *i() {
for (; e; e = a(e, 6))
;
return h;
}
int main() { k(c, c); }
gcc-8441841a1b9 (trunk) -O3 cannot eliminate the call to foo but
gcc-releases/gcc-13.1.0 -O3 can.
-----------------------------------------------------------------------
gcc-8441841a1b985d68245954af1ff023db121b0635 -O3 case.c -S -o case.s
--------- OUTPUT ---------
main:
.LFB3:
.cfi_startproc
pushq %r13
.cfi_def_cfa_offset 16
.cfi_offset 13, -16
pushq %r12
.cfi_def_cfa_offset 24
.cfi_offset 12, -24
pushq %rbp
.cfi_def_cfa_offset 32
.cfi_offset 6, -32
pushq %rbx
.cfi_def_cfa_offset 40
.cfi_offset 3, -40
subq $8, %rsp
.cfi_def_cfa_offset 48
movl e(%rip), %edi
movl c(%rip), %ebx
testl %edi, %edi
je .L5
.p2align 4,,10
.p2align 3
.L2:
movl $6, %esi
xorl %eax, %eax
call a
movswl %ax, %edi
movl %edi, e(%rip)
testl %edi, %edi
jne .L2
.L5:
movl f(%rip), %eax
movswl %ax, %edx
movw %ax, g(%rip)
movl %edx, f(%rip)
testw %ax, %ax
je .L36
movzbl %bl, %ebp
testb %bl, %bl
je .L39
movl %ebp, %eax
sall $6, %eax
xorl %ebp, %eax
cmpl $10, %eax
setne %r12b
.p2align 4,,10
.p2align 3
.L18:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L14
cmpl $-639457069, %ebx
jne .L17
.L19:
jmp .L19
.p2align 4,,10
.p2align 3
.L16:
cmpl $6, %ebp
jg .L20
movl e(%rip), %eax
xorl %r13d, %r13d
shrl $31, %eax
cmpb %al, %r12b
setb %r13b
.p2align 4,,10
.p2align 3
.L17:
testl %r13d, %r13d
je .L16
call foo
movl e(%rip), %eax
shrl $31, %eax
cmpl $6, %ebp
setg %dl
xorl %r13d, %r13d
orl %r12d, %edx
cmpb %al, %dl
movl d(%rip), %eax
setb %r13b
testl %eax, %eax
jne .L17
.L14:
cmpw $0, g(%rip)
jne .L18
.L36:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 40
xorl %eax, %eax
popq %rbx
.cfi_def_cfa_offset 32
popq %rbp
.cfi_def_cfa_offset 24
popq %r12
.cfi_def_cfa_offset 16
popq %r13
.cfi_def_cfa_offset 8
ret
.L39:
.cfi_restore_state
cmpl $6, %ebp
jg .L7
.p2align 4,,10
.p2align 3
.L10:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L8
.L9:
jmp .L9
.p2align 4,,10
.p2align 3
.L12:
cmpw $0, g(%rip)
je .L36
.L7:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L12
.L13:
jmp .L13
.p2align 4,,10
.p2align 3
.L8:
cmpw $0, g(%rip)
jne .L10
jmp .L36
.p2align 4,,10
.p2align 3
.L20:
cmpl $-639457069, %ebx
jne .L20
jmp .L19
---------- END OUTPUT ---------
-----------------------------------------------------------------------
gcc-2b98cc24d6af0432a74f6dad1c722ce21c1f7458 -O3 case.c -S -o case.s
--------- OUTPUT ---------
main:
.LFB3:
.cfi_startproc
movl e(%rip), %edi
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
movl c(%rip), %ebx
testl %edi, %edi
je .L5
.p2align 4,,10
.p2align 3
.L2:
movl $6, %esi
xorl %eax, %eax
call a
movswl %ax, %edi
movl %edi, e(%rip)
testl %edi, %edi
jne .L2
.L5:
movl f(%rip), %eax
movswl %ax, %edx
movw %ax, g(%rip)
movl %edx, f(%rip)
testw %ax, %ax
je .L37
movzbl %bl, %eax
cmpl $6, %eax
jg .L6
testb %bl, %bl
jne .L7
.p2align 4,,10
.p2align 3
.L10:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L8
.L9:
jmp .L9
.p2align 4,,10
.p2align 3
.L18:
cmpw $0, g(%rip)
je .L37
.L6:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L18
cmpl $-639457069, %ebx
je .L39
.L19:
testl %eax, %eax
je .L18
cmpl $-639457069, %ebx
jne .L19
.L39:
jmp .L39
.p2align 4,,10
.p2align 3
.L8:
cmpw $0, g(%rip)
jne .L10
.L37:
xorl %eax, %eax
popq %rbx
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.L7:
.cfi_restore_state
cmpl $-639457069, %ebx
je .L15
.p2align 4,,10
.p2align 3
.L12:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L16
.L17:
jmp .L17
.p2align 4,,10
.p2align 3
.L13:
cmpw $0, g(%rip)
je .L37
.L15:
xorl %eax, %eax
call a
cwtl
movl %eax, d(%rip)
testl %eax, %eax
je .L13
.L14:
jmp .L14
.p2align 4,,10
.p2align 3
.L16:
cmpw $0, g(%rip)
jne .L12
jmp .L37
---------- END OUTPUT ---------
-----------------------------------------------------------------------
Bisects to r14-2161-g237e83e2158
CC to include: [email protected]