[LLVMdev] Question about SPARC target status
resistor at mac.com
Tue Nov 11 14:51:13 PST 2008
On Nov 11, 2008, at 2:19 PM, Peter Shugalev wrote:
> Owen Anderson wrote:
>>> I can see only one reason for such dependence: inclusion of system
>>> headers in /usr/include. If I compile llvm-gcc with predefined set
>>> Linux headers (the way cross-compilers are usually made) will the IR
>>> output be the same no matter which platform is used for compilation?
>> No. Consider use of sizeof(), ABI issues, etc.
> Ooh, now I see llvm-gcc is not cross-compiler in the terms of GCC.
> but what if I actually compile LLVM-gcc as cross-compiler for 64-bit
> x86-64 Linux. Then it is guaranteed to produce identical output on all
> the systems.
> Question is: how the resulting LLVM IR will run on 32-bit machine?
> Should I create stubs for all called functions to convert between 32
> 64-bit pointers? Or it won't run at all?
If you configure it as a cross-compiler for 64-bit x86 Linux and feed
it the appropriate header files, it will produce the same output on
any platform. However, that output will not be executable on most
platforms, just on 64-bit x86 Linux. The problems go beyond pointer
size. The size of int is implementation dependent, etc. The layout
and padding of structs is implementation dependent. While all
implementations on a given target-triple will generally agree to
ensure binary compatibility, there is no guarantee of things being the
same once you go to another target-triple.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 2624 bytes
Desc: not available
More information about the llvm-dev