https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105677
Bug ID: 105677 Summary: Calling strlen on a string constant is optimized out, but calling wcslen on a string constant is not Product: gcc Version: 12.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: alexhenrie24 at gmail dot com Target Milestone: --- strlen example, source code: #include <string.h> int main() { return strlen("Hello world!"); } strlen example, assembly code at -O3: movl $12, %eax ret wcslen example, source code: #include <wchar.h> int main() { return wcslen(L"Hello world!"); } wcslen example, assembly code at -O3: subq $8, %rsp .cfi_def_cfa_offset 16 leaq .LC0(%rip), %rdi call wcslen@PLT addq $8, %rsp .cfi_def_cfa_offset 8 ret Interestingly, Clang produces identical assembly code for both examples, which is what I expected GCC to do.