[Bug tree-optimization/38592] eliminate some string comparisons

tkoenig at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Aug 14 20:12:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38592

Thomas Koenig <tkoenig at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|fortran                     |tree-optimization

--- Comment #8 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
I think the best place to fix this is in the middle-end.

Here is a C test case:

int yes()
{
  char a[3];
  __builtin_memmove (a, "yes", 3);
    return __builtin_memcmp(a,"yes",3);
}

This generates a memcmp with current trunk:

.LC0:
        .string "yes"
        .text
        .p2align 4,,15
        .globl  yes
        .type   yes, @function
yes:
.LFB0:
        .cfi_startproc
        subq    $24, %rsp
        .cfi_def_cfa_offset 32
        movl    $25977, %eax
        movl    $3, %edx
        leaq    13(%rsp), %rdi
        movl    $.LC0, %esi
        movw    %ax, 13(%rsp)
        movb    $115, 15(%rsp)
        call    memcmp
        addq    $24, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE0:
        .size   yes, .-yes
        .ident  "GCC: (GNU) 8.0.0 20170730 (experimental)"
        .section        .note.GNU-stack,"",@progbits


More information about the Gcc-bugs mailing list