How to inline string.h function on linux?

Posted by tz1 on Stack Overflow See other posts from Stack Overflow or by tz1
Published on 2011-03-03T23:03:45Z Indexed on 2011/03/03 23:24 UTC
Read the original article Hit count: 302

Filed under:
|
|

I want to optimize some code such that all the functions in string.h will be inlined. I'm on x86_64.

I've tried -O3, -minline-all-stringops and when I do "nm a.out" it shows it is calling the glibc version.

Checking with gcc -S, I see the calls.

What am I missing? There are dozens of #ifdef _SOME_SETTING_ in string.h, and bits/string3.h shows the inline version, but I don't know how to get there.

for example:

$ cat test.c

include

main() { char *a, b; strcpy(b,a); } /

When compiled with:

gcc -minline-all-stringops -O6 -I. -S -o test.S test.c

.file "test.c" .text .p2align 4,,15

.globl main .type main, @function main: .LFB12: .cfi_startproc subq $8, %rsp .cfi_def_cfa_offset 16 xorl %esi, %esi xorl %edi, %edi call strcpy addq $8, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .LFE12: .size main, .-main .ident "GCC: (GNU) 4.5.1 20100924 (Red Hat 4.5.1-4)" .section .note.GNU-stack,"",@progbits */

© Stack Overflow or respective owner

Related posts about gcc

Related posts about inline