[llvm-dev] Where is the code that is called when clang calls the job which generates IR?

Rob bor78 via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 5 07:25:30 PDT 2018


Where is the source code that is called when the clang binary executable
calls the command/job which compiles C code to IR?

I am using Clang as a library (basically a simplified version of the main
function in /tools/clang/tools/driver/driver.cpp).

My program creates an instance of clang::driver::Driver. I pass arguments
to TheDriver.BuildCompilation(args)). And then call ExecuteCompilation.
Everything works.

When I call TheDriver.PrintActions(*C) the output is

0: input, "testcode.cpp", c++
1: preprocessor, {0}, c++-cpp-output
2: compiler, {1}, ir
3: backend, {2}, assembler
4: assembler, {3}, object
5: linker, {4}, image

And when I loop over the jobs inside the Compilation object I see that the
clang binary executable is called 4 times (using execve) and finally ld.lld
is called.

I'm interested in the call to clang for "2: compiler, {1}, ir".

Is /tools/clang/tools/driver/driver.cpp called again? It seems that the
main function in driver.cpp eventually calls itself again. If not what is
called, and where is the source code?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180705/91463ed3/attachment.html>


More information about the llvm-dev mailing list