Messages in this thread | | | Subject | Re: [PATCH v7 2/2] tty: add rpmsg driver | From | Jiri Slaby <> | Date | Thu, 26 Mar 2020 13:31:44 +0100 |
| |
On 26. 03. 20, 11:59, Arnaud POULIQUEN wrote: > > > 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?
Right, gcc guys just confirmed, that it's constant-folded during parsing already. I asked them as I tried to dump the tree.original and the constant was already there.
So we are safe to use strlen, at least for gcc :P. Others should adapt if they don't follow.
thanks, -- js suse labs
| |