https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114979
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Jorge Acereda from comment #2) > Thanks for the prompt reply. I understand the behaviour for external > functions, but for static functions, isn't it a missed opportunity for > optimization? The question comes is the function still a non-prototyped function or not even if there is a definition. The answer is yes it is still a non-prototyped function. Anyways this does not matter that much since C23 changes () to be always prototyped and the same as (void). Also a zeroing of the register does only takes up icache space and does not get issued as it is taken care of during rename on most (if not all) modern x86_64 cores. So this is a very very minor space savings at best.