[Bug middle-end/126802] New: [17 Regression] Sub-optimal code of adding 2 chars

"hjl.tools at gmail dot com via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126802

            Bug ID: 126802
           Summary: [17 Regression] Sub-optimal code of adding 2 chars
           Product: gcc
           Version: 17.0
            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 gcc]$ cat /tmp/foo.c 
extern char *var1;
extern int var2;
void
func (void)
{
  var2 = var1[1] + var1[0];
}
[hjl@gnu-zen4-1 gcc]$ ./xgcc -B./ -O2 -S /tmp/foo.c
[hjl@gnu-zen4-1 gcc]$ cat foo.s
        .file   "foo.c"
        .text
        .p2align 4
        .globl  func
        .type   func, @function
func:
.LFB0:
        .cfi_startproc
        movq    var1(%rip), %rax
        pxor    %xmm1, %xmm1
        pinsrw  $0, (%rax), %xmm0
        pcmpgtb %xmm0, %xmm1
        punpcklbw       %xmm1, %xmm0
        movdqa  %xmm0, %xmm1
        psraw   $15, %xmm1
        punpcklwd       %xmm1, %xmm0
        movd    %xmm0, %edx
        pshufd  $0xe5, %xmm0, %xmm2
        movd    %xmm2, %eax
        addl    %edx, %eax
        movl    %eax, var2(%rip)
        ret
        .cfi_endproc
.LFE0:
        .size   func, .-func
        .ident  "GCC: (GNU) 17.0.0 20260809 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 gcc]$ /usr/gcc-16.2.1-x32/bin/gcc -S -O2 /tmp/foo.c
[hjl@gnu-zen4-1 gcc]$ cat foo.s
        .file   "foo.c"
        .text
        .p2align 4
        .globl  func
        .type   func, @function
func:
.LFB0:
        .cfi_startproc
        movq    var1(%rip), %rdx
        movsbl  1(%rdx), %eax
        movsbl  (%rdx), %edx
        addl    %edx, %eax
        movl    %eax, var2(%rip)
        ret
        .cfi_endproc
.LFE0:
        .size   func, .-func
        .ident  "GCC: (GNU) 16.2.1 20260810"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 gcc]$
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.