Стеки не могут перекрываться.
Учтите, что аргумент может быть глобальным объектом, кучей или даже если он хранится в стеке, он может быть не самым последним элементом. В зависимости от соглашения о вызовах другие элементы могут быть помещены между одним кадром стека и параметрами, передаваемыми в функцию (т. Е. Адрес возврата) ...
И обратите внимание, что даже если в стек ничего не было добавлено, решение не может быть принято во время компиляции функции, а скорее, когда компилятор обрабатывает вызывающую функцию. Как только функция скомпилирована, она не изменится в зависимости от того, откуда она вызывается.