mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 20:59:51 +00:00
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:
parent
35b5107951
commit
cfbcd591d2
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user