On 3/26/20 1:01 AM, Joe Perches wrote: > On Wed, 2020-03-25 at 14:31 +0100, Jiri Slaby wrote: >> The question was exactly about that: can a compiler optimize it to a >> bare number or will strlen call remain there? > > $ cat str.c > #include <string.h> > > int foo(void) > { > return strlen("abc"); > } > > $ gcc -c -O2 str.c > $ objdump -d str.o > str.o: file format elf64-x86-64 > > > Disassembly of section .text: > > 0000000000000000 <foo>: > 0: f3 0f 1e fa endbr64 > 4: b8 03 00 00 00 mov $0x3,%eax > 9: c3 retq > > same result with arm gcc using -O1 or -Og: str.o: file format elf32-littlearm Disassembly of section .text: 00000000 <foo>: 0: e3a00003 mov r0, #3 4: e12fff1e bx lr So in conclusion replacing sizeof by srlen even if not optimized in -o0, right? Thanks, Arnaud