On Wed, Aug 19, 2015 at 08:25:49AM -0700, H.J. Lu wrote: > Here is a patch to add __builtin_argument_pointer. I only have
Sorry to be a pain but... all the other builtins use _address instead of _pointer, it's probably best to follow that. > -- Built-in Function: void * __builtin_argument_pointer (void) > This function returns the argument pointer. > > as documentation. Can you suggest a better description so that it can > be implemented also by other compilers? 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. 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. > + /* Can't use DRAP if the stack address has been taken. */ > + if (cfun->argument_pointer_taken) > + sorry ("%<__builtin_argument_pointer%> not supported with stack" > + " realignment. This may be worked around by adding" > + " -maccumulate-outgoing-args."); This doesn't work with DRAP? Pity :-( The patch looks plausible, but I of course can not approve it. Thanks, Segher