[cfe-dev] Force __builtin_va_list to be a char* in any architecture?
Oliver Stannard via cfe-dev
cfe-dev at lists.llvm.org
Thu Dec 12 10:04:11 PST 2019
I'm not aware of any option to do that, and I don't think such an option
could work for AArch64 without completely changing the ABI. For
AArch64, __builtin_va_list is a struct with 5 members, which is needed
because arguments can be passed in a mixture of integer and floating-point
registers, and on the stack, so a single pointer can't store all of the
On Thu, 12 Dec 2019 at 17:14, Mikhail Ramalho via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> Hi all,
> Is there any way to force __builtin_va_list to always be a char*,
> regardless of the architecture?
> We are using clang as a frontend in our project and our analysis relies on
> the fact that __builtin_va_list is a char* on 64 bits architecture as well,
> but we keep getting:
> |-TypedefDecl 0x4148c78 <<invalid sloc>> <invalid sloc> implicit
> referenced __builtin_va_list 'struct __va_list_tag '
> | `-ConstantArrayType 0x4148c20 'struct __va_list_tag ' 1
> | `-RecordType 0x4148aa0 'struct __va_list_tag'
> | `-Record 0x4148a10 '__va_list_tag'
> I've tried several different combinations of defines but to no avail.
> In case it is not possible, we could submit a patch to add an option to
> force that on clang. A bit of an overkill given that we would be the only
> users (I think).
> Mikhail Ramalho.
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev