Does LLVM have some interface to determine whether a parameter type may be passed in registers?

Hi, all!

I want to implement C language variable argument support with LLVM-3.3 on x86_64.
But it seems LLVM does not support va_arg with long double type and aggregate type
on x86_64. So I need to seek another way.

I saw the “Coding Examples” in AMD64-ABI manual, in which the algorithm for the
generic va_arg implementation needs to determine whether a parameter type may be
passed in registers. I want to know whether LLVM has already implemented some
interfaces to check it? Or I need to write one by myself? It’s a pity that I’m not very
familiar with it. Can anyone give me some suggestions?

Thanks in advance!

Zhang