memcpy
GCCには C99/posix 関数のバージョンがあります: __builtin_memcpy
.
GCC によって memcpy のインライン バージョンに置き換えられる場合もあれば、libc の memcpy への呼び出しによって置き換えられる場合もあります。たとえば、ここに記載されていました:
最後に、コンパイラに関する注意事項として、__builtin_memcpy は memcpy 関数呼び出しを発行するようにフォールバックできます。
この選択のロジックは何ですか? clang/llvm、intel c++ コンパイラ、PCC、suncc (oracle studio) など、他の gcc 互換コンパイラでもロジックは同じですか?
プレーンな memcpy よりも __builtin_memcpy を使用した方がよいのはいつですか?