<div dir="ltr">Someone else (possibly from your research group!) wanted something similar a long time ago. They wanted a way to ensure that structs were always passed in memory using the 'byval' attribute, so that they could more easily analyze the IR. The proposed solution was to add a target triple and then compile targeting that. Unfortunately, they didn't get any traction, so we never added that. That solution also has the downside that you'll miss code under architecture specific #ifdefs that you might want to analyze.<div><br></div><div>Anyway, I can't actually find the relevant email anymore, but searching "llvmdev defaultabiinfo" turns up a bunch of relevant hits for you.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jul 19, 2015 at 12:43 PM, Jia Chen <span dir="ltr"><<a href="mailto:jchen@cs.utexas.edu" target="_blank">jchen@cs.utexas.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi clang devs,<br>
<br>
I've been writing static analysis on top of LLVM IR for quite some time and I rely on clang to get me IRs from C source codes. Functions with variadic arguments used to be something I tried to avoid but as my work progressed, it seems that a lot of real-world C codes use them so it's necessary to teach my analysis to understand them.<br>
<br>
If my understanding was correct, currently clang recognizes variadic functions in C source code and directly emit IRs that manipulate architecture-specific vararg structures, rather than emitting a target-independent va_arg instruction. At least on my x86_64 machine, this vararg structure consists of two offset fields and two buffer pointers and is quite difficult to handle. It would be nice if the front end could stop the vararg lowering and just give me a simple va_arg instruction instead. Is there a simple tweak I can do to have clang give me the va_arg instruction I want? Or do I have to modify clang's source code to do that?<br>
<br>
-- <br>
Best Regards,<br>
<br>
--<br>
Jia Chen<br>
Department of Computer Science<br>
University of Texas at Austin<br>
<a href="mailto:jchen@cs.utexas.edu" target="_blank">jchen@cs.utexas.edu</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cs.utexas.edu_-7Ejchen&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=CnzuN65ENJ1H9py9XLiRvC_UQz6u3oG6GUNn7_wosSM&m=d0uH7peieTCgjJexedQ7Jap_VeV9aejq9Yen5BCb3c4&s=GoZ6zSY0YZkgS7rnOjOujjbKHcj-zyC_atP7R_GIaNs&e=" rel="noreferrer" target="_blank">http://www.cs.utexas.edu/~jchen</a><br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>