mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Answer a common FAQ:
"Can I compile C or C++ code to platform-independent LLVM bitcode?" llvm-svn: 64222
This commit is contained in:
parent
e0f1fe111b
commit
abede9d54b
@ -87,6 +87,8 @@
|
|||||||
|
|
||||||
<li><a href="#translatecxx">Can I use LLVM to convert C++ code to C code?</a></li>
|
<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>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -629,6 +631,31 @@ with standard C++ libraries.</p>
|
|||||||
|
|
||||||
</div>
|
</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">
|
<div class="doc_section">
|
||||||
<a name="cfe_code">Questions about code generated by the GCC front-end</a>
|
<a name="cfe_code">Questions about code generated by the GCC front-end</a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user