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)

Reply via email to