https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127001
Bug ID: 127001
Summary: -O1 generates slower code than -Os
Product: gcc
Version: 16.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
[hjl@gnu-zen4-1 pr126980]$ cat bar2.c
short
func (int i)
{
short a[] = { 0, -1, -2, 3 };
return a[i];
}
[hjl@gnu-zen4-1 pr126980]$ gcc -S -O1 bar2.c
[hjl@gnu-zen4-1 pr126980]$ cat bar2.s
.file "bar2.c"
.text
.globl func
.type func, @function
func:
.LFB0:
.cfi_startproc
movw $0, -8(%rsp)
movw $-1, -6(%rsp)
movw $-2, -4(%rsp)
movw $3, -2(%rsp)
movslq %edi, %rdi
movzwl -8(%rsp,%rdi,2), %eax
ret
.cfi_endproc
.LFE0:
.size func, .-func
.ident "GCC: (GNU) 16.2.1 20260819 (Red Hat 16.2.1-2)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 pr126980]$ gcc -S -Os bar2.c
[hjl@gnu-zen4-1 pr126980]$ cat bar2.s
.file "bar2.c"
.text
.globl func
.type func, @function
func:
.LFB0:
.cfi_startproc
movabsq $1125895611809792, %rax
movslq %edi, %rdi
movq %rax, -8(%rsp)
movw -8(%rsp,%rdi,2), %ax
ret
.cfi_endproc
.LFE0:
.size func, .-func
.ident "GCC: (GNU) 16.2.1 20260819 (Red Hat 16.2.1-2)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 pr126980]$
movw $0, -8(%rsp)
movw $-1, -6(%rsp)
movw $-2, -4(%rsp)
movw $3, -2(%rsp)
is slower than
movabsq $1125895611809792, %rax
movq %rax, -8(%rsp)