The linker can usually merge identical functions, and the compiler does this too.
You'll only get different copies if they are relevant, and usually the branch elimination is more than enough to compensate.
Another aspect about this is that the cache will hold the _hot_ stuff. In most systems, even if you have three copies of a function, it will likely only have one of those that is hot.
Another aspect about this is that the cache will hold the _hot_ stuff. In most systems, even if you have three copies of a function, it will likely only have one of those that is hot.