title: How to inline string.h function on linux?
body: <p>I want to optimize some code such that all the functions in string.h will be inlined.  I'm on x86_64.</p>
  
  <p>I've tried -O3, -minline-all-stringops and when I do "nm a.out" it shows it is calling the glibc version.</p>
  
  <p>Checking with gcc -S, I see the calls.</p>
  
  <p>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.</p>
  
  <p>for example:</p>
  
  <pre><code>$ cat test.c
  #include &lt;string.h&gt;
  
  main() {
      char *a, *b;
      strcpy(b,a);
  }
  /*
  
  When compiled with:
  
  gcc -minline-all-stringops -O6 -I. -S -o test.S test.c
  
  Produces:
  
      .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
  */
  </code></pre>