https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121013
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Target| |x86_64 Resolution|--- |INVALID Component|middle-end |target --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- __builtin_stack_address was added to support stack scrubbing: https://inbox.sourceware.org/gcc-patches/orpmti5ikv....@lxoliva.fsfla.org/ So reading the user level documentation and the original patch. Both addresses are correct. Specifically this part is the documentation: "Arguments for a callee ___may___ be ___preallocated___ as part of the caller’s stack frame, or allocated on a __per-call__ basis, depending on the target, so they may be on either side of this boundary." In this case it is not only depending on the target but also which optimization level and other options for x86.