This is the mail archive of the
mailing list for the GCC project.
Re: RTL/SYMREF/VOLATILE question
In essence I am passing this rtx up the chain to the expand_va_arg code, so I
don't KNOW what insns are emitted unless I do a lot of painful digging.
There still isn't enough info here to understand what your problem is.
There should be no need to use a volatile mem in EXPAND_BUILTIN_VA_ARG.
The compiler will only eliminate symbol references that are unused. So
if they are being optimized away, then either the C source code is not
using them, or else the RTL you are emitting is not using them. This
could be a bug in either the C source code or in your RTL, neither or
which I have access to, so I can't tell.
Returning a naked symbol ref from EXPAND_BUILTIN_VA_ARG is unlikely to
be useful. The return value is supposed to be the address of the next
unnamed argument, and I don't see how it is possible for such arguments
to be located inside a variable. Hence the address can't possibly be a
symbol_ref. The address could be stored in a variable, but in that case
you need a MEM of a SYMBOL_REF.
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com