https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97260
Bug ID: 97260 Summary: memcmp of constant string and local constant array not folded Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- GCC fails to fold the memcmp call below into a constant. Clang folds it successfully. $ cat x.c && gcc -O2 -S -Wall -Wextra -fdump-tree-optimized=/dev/stdout -o/dev/stdout x.c int f (void) { const char a[] = "1234"; return __builtin_memcmp (a, "1234", 4); } .file "x.c" .text ;; Function f (f, funcdef_no=0, decl_uid=1931, cgraph_uid=1, symbol_order=0) f () { const char a[5]; int _3; <bb 2> [local count: 1073741824]: a = "1234"; _3 = __builtin_memcmp (&a, "1234", 4); a ={v} {CLOBBER}; return _3; } .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "1234" .text .p2align 4 .globl f .type f, @function f: .LFB0: .cfi_startproc subq $24, %rsp .cfi_def_cfa_offset 32 movl $4, %edx movl $.LC0, %esi leaq 11(%rsp), %rdi movl $875770417, 11(%rsp) movb $0, 15(%rsp) call memcmp addq $24, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .LFE0: .size f, .-f .ident "GCC: (GNU) 11.0.0 20200930 (experimental)" .section .note.GNU-stack,"",@progbits