On Wed, Aug 19, 2015 at 10:48 AM, Segher Boessenkool <seg...@kernel.crashing.org> wrote: > On Wed, Aug 19, 2015 at 10:08:01AM -0700, H.J. Lu wrote: >> > Maybe something like (heavily cut'n'pasted): >> > >> > >> > @deftypefn {Built-in Function} {void *} __builtin_argument_address (void) >> > This function is similar to @code{__builtin_frame_address} with an >> > argument of 0, but it returns the address of the incoming arguments to >> > the current function rather than the address of its frame. >> >> This doesn't make senses when there is no argument or arguments >> are passed in registers. > > Sure, but see the weasel-words below ("The exact...") > >> To me, argument pointer is a virtual concept >> and an implementation detail internal to GCC. I am not sure if another >> compiler can implement it based on this description. > > The same is true for frame_address, on many machines.
Stack frame is well understood unlike argument pointer which is pretty vague. >> > The exact definition of this address depends upon the processor and the >> > calling convention. Usually some arguments are passed in registers and >> > the rest on the stack, and this builtin returns the address of the first >> > argument that is on the stack. > > > Segher -- H.J.