From my understanding, the local parameters, return address among other things of a procedure are pushed on to the stack in memory only to be popped later into the respective registers to be accessed by the CPU because there are limited number of registers which cannot accommodate leaf procedures with a large number of parameters or functions that call other functions.
If there is a tiny leaf function which takes in a few parameters that can be stored in the local registers, will modern compilers still generate code to create a stack frame for the function?