Answer a common FAQ:

"Can I compile C or C++ code to platform-independent LLVM bitcode?"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64222 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2009-02-10 17:26:53 +00:00
parent 35b5107951
commit cfbcd591d2

View File

@ -87,6 +87,8 @@
<li><a href="#translatecxx">Can I use LLVM to convert C++ code to C code?</a></li>
<li><a href="#platformindependent">Can I compile C or C++ code to platform-independent LLVM bitcode?</a></li>
</ol>
</li>
@ -629,6 +631,31 @@ with standard C++ libraries.</p>
</div>
<div class="question">
<p>
<a name="platformindependent">Can I compile C or C++ code to platform-independent LLVM bitcode?</a>
</p>
</div>
<div class="answer">
<p>No. C and C++ are inherently platform-dependent languages. The most
obvious example of this is the preprocessor. A very common way that C code
is made portable is by using the preprocessor to include platform-specific
code. In practice, information about other platforms is lost after
preprocessing, so the result is inherently dependent on the platform that
the preprocessing was targetting.</p>
<p>Another example is <tt>sizeof</tt>. It's common for <tt>sizeof(long)</tt>
to vary between platforms. In most C front-ends, <tt>sizeof</tt> is expanded
to a constant immediately, thus hardwaring a platform-specific detail.</p>
<p>Also, since many platforms define their ABIs in terms of C, and since
LLVM is lower-level than C, front-ends currently must emit platform-specific
IR in order to have the result conform to the platform ABI.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="cfe_code">Questions about code generated by the GCC front-end</a>