[llvm-commits] [llvm] r44825 - in /llvm/trunk: include/llvm/Target/TargetData.h lib/Target/TargetData.cpp
Duncan Sands
baldrick at free.fr
Tue Dec 11 01:25:28 PST 2007
Hi Chris,
> Duncan, this patch gets llvm-gcc to build, but it still doesn't
> answer the big question: why does TargetData contain information
> about the host?
well, it needed to go somewhere. Any suggestions for a better place?
Another possibility is to have a function isWrongEndian in target data,
which tells you if the target has opposite endianness to the host.
> I don't think this is the right approach. Also, you
> can get the host endianness without autoconf by using something
> simple like:
>
> bool islittleendian() {
> union {
> int i;
> char c;
> };
>
> i = 1;
> return c;
> }
I have no particular opinion on this (except that it's amazing to me
that there's no standard way to query the compiler for this in C++ :) ).
Presumably the compiler will reduce this function to: return true; (or false)
at compile time, so there's no cost to your approach. I suppose that plenty
of things that autoconf does could also be done in a special function like this,
yet they are left to autoconf - I have no idea what the criteria are for doing
something via autoconf or via a runtime test. Having the function inline in a
header would have the advantage that the compiler would eliminate a bunch of code
in ExecutionEngine at runtime. Since it seems that the autoconf solution is not
compatible with being exposed in a header, that suggests your solution is the way
to go.
Ciao,
Duncan.
More information about the llvm-commits
mailing list