>>531
実際のところは判りませんが、非常に小さな関数の場合はインライン展開した方がサイズが小さくなります。
例えば、x86で次のようなソースを-Osでコンパイルするとその下のリストのようになります。
--
static int func(int d) {return d * d;}
int ff(int d) {return func(d);}
--
_ff:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
popl %ebp
imull %eax, %eax
ret
--
因みに、staticを外したらこうなりました。
--
_func:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
popl %ebp
imull %eax, %eax
ret
--
_ff:
pushl %ebp
movl %esp, %ebp
popl %ebp
jmp _func
--
staticじゃない関数もインライン展開してしまうのは、確かにちょっと腑に落ちませんね。