[LLVMdev] A question about running Clang after LLVM passes
John Criswell
criswell at illinois.edu
Fri Jun 13 07:13:31 PDT 2014
On 6/12/14, 9:29 PM, Padefic wrote:
> I am doing a research project. I want to run the DSA pass of LLVM, and
> use its result in Clang for automatic fixing. I have to use Clang
> because the line numbers in Clang are accurate so that I can change
> code accordingly, while LLVM IR seems to lose the information.
If I understand what you're saying, you're building a refactoring tool
that does some analysis on the program and then changes the original
program's source code. Is this correct?
I do not think that this is a good idea. DSA operates on the LLVM IR.
Not only will you have the headache of making DSA's results available to
Clang, but Clang "sees" the program at the Clang AST level while DSA
"sees" the program at the LLVM IR level. Mapping DSA's results from the
LLVM IR back to the AST that Clang creates will be painful in the best
case and will probably not work reliably at all in the worst case.
I think your best option is to build a points-to analysis that works at
the Clang AST level and put it into clang directly. There might be the
issue of how to build an inter-procedural points-to analysis with Clang,
but I think there either is a way for Clang to do that, or there is work
to make Clang do that.
>
> I need to access the objects created in LLVM pass to get information.
> Thank Bruce for your advice, could you explain more about how to
> output using the C backend? Does it mean to output to files, which
> then input into Clang? I would appreciate any reference on this problem.
The C Backend generates C code instead of native assembly code. The C
code it generates is ugly and looks almost nothing like the original C
source code that was compiled. Again, if you're building a refactoring
tool, this is probably not what you want.
Regards,
John Criswell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140613/a45dff4a/attachment.html>
More information about the llvm-dev
mailing list