4 ms·
Well, if the function is marked "static", the compiler can actually check whether the function's address is taken in the current compilation unit or not and omi
by Joker_vD 3y ago
Well, if the function is marked "static", the compiler can actually check whether the function's address is taken in the current compilation unit or not and omit/emit ENDBR64 accordingly (passing pointers to static functions to code in another compilation units is legal, and should still work).
- messe 3y agoGood catch. Yeah, as long as the functions address is never taken the compiler has a lot of leeway with static functions; it can even avoid emitting code for them entirely if it can prove they're never called or if it's able to compute their results at compile-time.
- josephg 3y agoYep. Or inline them at every call site if that makes sense to do based on the optimization level and flags.