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

via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 9 06:33:34 PDT 2018


(Remembering to add llvm-dev this timeā€¦)

If you look at the argc/argv for the "2: compiler" case, the first option should be "-cc1" which will cause the driver to dispatch to cc1_main(), which is in cc1_main.cpp.
--paulr


From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Rob bor78 via llvm-dev
Sent: Thursday, July 05, 2018 10:25 AM
To: llvm-dev at lists.llvm.org
Subject: [llvm-dev] Where is the code that is called when clang calls the job which generates IR?

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/20180709/3ef59d20/attachment.html>


More information about the llvm-dev mailing list