[llvm-commits] [llvm] r80863 - /llvm/trunk/lib/System/Unix/Host.inc
Daniel Dunbar
daniel at zuster.org
Thu Sep 3 20:22:11 PDT 2009
Tanya, please take this for 2.6, thanks!
- Daniel
On Wed, Sep 2, 2009 at 6:10 PM, Daniel Dunbar<daniel at zuster.org> wrote:
> Author: ddunbar
> Date: Wed Sep 2 20:10:13 2009
> New Revision: 80863
>
> URL: http://llvm.org/viewvc/llvm-project?rev=80863&view=rev
> Log:
> Improve llvm::getHostTriple for some cases where the LLVM_HOSTTRIPLE is not
> reliable.
>
> Modified:
> llvm/trunk/lib/System/Unix/Host.inc
>
> Modified: llvm/trunk/lib/System/Unix/Host.inc
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Unix/Host.inc?rev=80863&r1=80862&r2=80863&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/System/Unix/Host.inc (original)
> +++ llvm/trunk/lib/System/Unix/Host.inc Wed Sep 2 20:10:13 2009
> @@ -16,7 +16,8 @@
> //=== is guaranteed to work on *all* UNIX variants.
> //===----------------------------------------------------------------------===//
>
> -#include <llvm/Config/config.h>
> +#include "llvm/Config/config.h"
> +#include "llvm/ADT/StringRef.h"
> #include "Unix.h"
> #include <sys/utsname.h>
> #include <string>
> @@ -33,10 +34,47 @@
> }
>
> std::string sys::getHostTriple() {
> - // FIXME: Derive more directly instead of relying on the autoconf
> - // generated variable.
> + // FIXME: Derive directly instead of relying on the autoconf generated
> + // variable.
>
> - std::string Triple = LLVM_HOSTTRIPLE;
> + StringRef HostTripleString(LLVM_HOSTTRIPLE);
> + std::pair<StringRef, StringRef> ArchSplit = HostTripleString.split('-');
> +
> + // Normalize the arch, since the host triple may not actually match the host.
> + std::string Arch = ArchSplit.first;
> +
> + // It would be nice to do this in terms of llvm::Triple, but that is in
> + // Support which is layered above us.
> +#if defined(__x86_64__)
> + Arch = "x86_64";
> +#elif defined(__i386__)
> + Arch = "i386";
> +#elif defined(__ppc64__)
> + Arch = "powerpc64";
> +#elif defined(__ppc__)
> + Arch = "powerpc";
> +#elif defined(__arm__)
> +
> + // FIXME: We need to pick the right ARM triple (which involves querying the
> + // chip). However, for now this is most important for LLVM arch selection, so
> + // we only need to make sure to distinguish ARM and Thumb.
> +# if defined(__thumb__)
> + Arch = "thumb";
> +# else
> + Arch = "arm";
> +# endif
> +
> +#else
> +
> + // FIXME: When enough auto-detection is in place, this should just
> + // #error. Then at least the arch selection is done, and we only need the OS
> + // etc selection to kill off the use of LLVM_HOSTTRIPLE.
> +
> +#endif
> +
> + std::string Triple(Arch);
> + Triple += '-';
> + Triple += ArchSplit.second;
>
> // Force i<N>86 to i386.
> if (Triple[0] == 'i' && isdigit(Triple[1]) &&
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list