Only if you want to put it in a header file. It is perfectly possible for the compiler to inline a call to a function that's defined as a non-inline function in the same file in which it is called and in fact compiler do regularly do that.
First of all if the function is inlined (which it will be in gcc with optimizations on), you get the same code in both cases.
If it is not inlined, the only overhead is the cost of CALL (which is really not that big). You're talking about the cost of passing by-values, but we're talking about integers here. The cost of passing an integer by value is the cost of putting that integer into a register. And since we want to add the numbers, we need to store them in registers anyway, so there's no added cost when using a non-inlined function other than that of the CALL.
Note that even if the arguments were passed on the stack instead of as registers, you're making the cost of copying an int sound a lot more significant than it is.