It's not just function call overhead: inlining allows secondary optimisations like constant folding and dead-code elimination.

I think it would also be worth mentioning that the compiler will actually do this automatically (estimating whether it will be beneficial using heuristics like the size of the function, and the number of times it is called).