use getHostTriple instead of getDefaultTargetTriple in getClosestTargetForJIT
authorSebastian Pop <spop@codeaurora.org>
Wed, 4 Jan 2012 19:47:22 +0000 (19:47 +0000)
committerSebastian Pop <spop@codeaurora.org>
Wed, 4 Jan 2012 19:47:22 +0000 (19:47 +0000)
Get back getHostTriple.

For JIT compilation, use the host triple instead of the default
target: this fixes some JIT testcases that used to fail when the
compiler has been configured as a cross compiler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147542 91177308-0d34-0410-b5e6-96231b3b80d8

14 files changed:
autoconf/configure.ac
cmake/config-ix.cmake
configure
include/llvm/Config/config.h.cmake
include/llvm/Config/config.h.in
include/llvm/Config/llvm-config.h.cmake
include/llvm/Config/llvm-config.h.in
include/llvm/Support/Host.h
lib/Support/CommandLine.cpp
lib/Support/TargetRegistry.cpp
lib/Support/Unix/Host.inc
lib/Support/Windows/Host.inc
projects/sample/autoconf/configure.ac
projects/sample/configure

index 646d9a859108745503de956c9cbebdbb6b13c4fe..a5ccd3361cb5af5bb224e65e59313a0df8fc5aca 100644 (file)
@@ -1484,6 +1484,8 @@ AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
                    [Installation directory for man pages])
 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
                    [Time at which LLVM was configured])
+AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host",
+                   [Host triple LLVM will run on])
 AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
                    [Target triple LLVM will generate code for by default])
 
index b380a48637fd143139f93d6b4c6aa74ae19064c5..4ee433ae941462a749ffbd0014b5002412e92f3f 100755 (executable)
@@ -288,13 +288,16 @@ include(CheckCXXCompilerFlag)
 check_cxx_compiler_flag("-Wno-variadic-macros" SUPPORTS_NO_VARIADIC_MACROS_FLAG)
 
 include(GetTargetTriple)
+get_target_triple(LLVM_HOST_TRIPLE)
 get_target_triple(LLVM_DEFAULT_TARGET_TRIPLE)
 
+set(HOST_TRIPLE "${LLVM_HOST_TRIPLE}")
 set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")
 
 # Determine the native architecture.
 string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
 if( LLVM_NATIVE_ARCH STREQUAL "host" )
+  string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_HOST_TRIPLE})
   string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_DEFAULT_TARGET_TRIPLE})
 endif ()
 
index d0c3beb7eb4af9316202eacbad91b84cb67c2743..5ea1319f0dc175cfdec68300e962a0f7bc6121ba 100755 (executable)
--- a/configure
+++ b/configure
@@ -20912,6 +20912,11 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+cat >>confdefs.h <<_ACEOF
+#define LLVM_HOST_TRIPLE "$host"
+_ACEOF
+
+
 cat >>confdefs.h <<_ACEOF
 #define LLVM_DEFAULT_TARGET_TRIPLE "$target"
 _ACEOF
index b4356b18c7ede873434c2d3b6bdba1ea0ea670d5..920bc4153f3a35e718a06c3885f7e0eb4c1330ea 100644 (file)
 /* Has gcc/MSVC atomic intrinsics */
 #cmakedefine01 LLVM_HAS_ATOMICS
 
+/* Host triple LLVM will run on */
+#cmakedefine LLVM_HOST_TRIPLE "${LLVM_HOST_TRIPLE}"
+
 /* Installation directory for include files */
 #cmakedefine LLVM_INCLUDEDIR "${LLVM_INCLUDEDIR}"
 
index 30afa5890be8078580bd85d039ed11eac6480c83..f49e176391b8741e6cce66ea9ce61e77edf19fcb 100644 (file)
 /* Has gcc/MSVC atomic intrinsics */
 #undef LLVM_HAS_ATOMICS
 
+/* Host triple LLVM will run on */
+#undef LLVM_HOST_TRIPLE
+
 /* Installation directory for include files */
 #undef LLVM_INCLUDEDIR
 
index 0c5b542679b095dcfeea0aced53243db11df0903..5cc35e662fc6a571dd8d80233bd86cb118ea8dd1 100644 (file)
@@ -40,6 +40,9 @@
 /* Has gcc/MSVC atomic intrinsics */
 #cmakedefine01 LLVM_HAS_ATOMICS
 
+/* Host triple LLVM will run on */
+#cmakedefine LLVM_HOST_TRIPLE "${LLVM_HOST_TRIPLE}"
+
 /* Installation directory for include files */
 #cmakedefine LLVM_INCLUDEDIR "${LLVM_INCLUDEDIR}"
 
index 30a935bf9c22f1ba5bba3875ad72975eb5561548..a06162f92aa1486732451e62126428dba2f33fa3 100644 (file)
@@ -40,6 +40,9 @@
 /* Has gcc/MSVC atomic intrinsics */
 #undef LLVM_HAS_ATOMICS
 
+/* Host triple LLVM will run on */
+#undef LLVM_HOST_TRIPLE
+
 /* Installation directory for include files */
 #undef LLVM_INCLUDEDIR
 
index b331016322687bbe74f61a0aee73e57c8485b061..b68a7ae4c99f96cc2402099d12d14f37b7107e08 100644 (file)
@@ -33,6 +33,14 @@ namespace sys {
     return !isLittleEndianHost();
   }
 
+  /// getHostTriple() - Return the host where the compiler will be running.
+  ///
+  /// The host triple is a string in the format of:
+  ///   CPU_TYPE-VENDOR-OPERATING_SYSTEM
+  /// or
+  ///   CPU_TYPE-VENDOR-KERNEL-OPERATING_SYSTEM
+  std::string getHostTriple();
+
   /// getDefaultTargetTriple() - Return the default target triple the compiler
   /// has been configured to produce code for.
   ///
index ce9344954bcc3ca1c564c207228916cb0523d309..9e8207baa88a6ea15f2e01e347ec457661d4aff5 100644 (file)
@@ -1373,6 +1373,7 @@ public:
        << "  Built " << __DATE__ << " (" << __TIME__ << ").\n"
 #endif
        << "  Default target: " << sys::getDefaultTargetTriple() << '\n'
+       << "  Host: " << sys::getHostTriple() << '\n'
        << "  Host CPU: " << CPU << '\n';
   }
   void operator=(bool OptionWasSpecified) {
index 53c8d84e7d45882c548863becfe17ffef61d8c7a..7497bfe035c66b69eaccf6574597ac5da70f89de 100644 (file)
@@ -84,7 +84,7 @@ void TargetRegistry::RegisterTarget(Target &T,
 }
 
 const Target *TargetRegistry::getClosestTargetForJIT(std::string &Error) {
-  const Target *TheTarget = lookupTarget(sys::getDefaultTargetTriple(), Error);
+  const Target *TheTarget = lookupTarget(sys::getHostTriple(), Error);
 
   if (TheTarget && !TheTarget->hasJIT()) {
     Error = "No JIT compatible target available for this host";
index 726e2fbcf056686f41533547a670a90bafcde7c6..82f717fc39bf3669b31641cf35046d2ec6cb8d39 100644 (file)
@@ -35,13 +35,9 @@ static std::string getOSVersion() {
   return info.release;
 }
 
-std::string sys::getDefaultTargetTriple() {
-  StringRef TargetTripleString(LLVM_DEFAULT_TARGET_TRIPLE);
-  std::pair<StringRef, StringRef> ArchSplit = TargetTripleString.split('-');
-
-  // Normalize the arch, since the target triple may not actually match the target.
+std::string getTriple(StringRef &TripleString) {
+  std::pair<StringRef, StringRef> ArchSplit = TripleString.split('-');
   std::string Arch = ArchSplit.first;
-
   std::string Triple(Arch);
   Triple += '-';
   Triple += ArchSplit.second;
@@ -61,3 +57,13 @@ std::string sys::getDefaultTargetTriple() {
 
   return Triple;
 }
+
+std::string sys::getDefaultTargetTriple() {
+  StringRef TargetTripleString(LLVM_DEFAULT_TARGET_TRIPLE);
+  return getTriple(TargetTripleString);
+}
+
+std::string sys::getHostTriple() {
+  StringRef HostTripleString(LLVM_HOST_TRIPLE);
+  return getTriple(HostTripleString);
+}
index 2e6d6f190370b9143a9417b89a37e14b96c7df59..cce82349cd6131c4dca5f52c37bb5e374e051359 100644 (file)
@@ -20,3 +20,7 @@ using namespace llvm;
 std::string sys::getDefaultTargetTriple() {
   return LLVM_DEFAULT_TARGET_TRIPLE;
 }
+
+std::string sys::getHostTriple() {
+  return LLVM_HOST_TRIPLE;
+}
index a19e87ddf95be41703ae61d0c2c8aa9422d1c39d..3fd02578c4fb112d21ac78be137730e2e68df0b0 100644 (file)
@@ -1390,6 +1390,8 @@ AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
                    [Installation directory for man pages])
 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
                    [Time at which LLVM was configured])
+AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host",
+                   [Host triple LLVM will run on])
 AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
                    [Target triple LLVM will generate code for by default])
 
index 860faa292713a36c14248b323e572cda6a324ec8..f64383b3bdc9b7833021a91365517a62a8cb0182 100755 (executable)
@@ -8854,7 +8854,7 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
+freebsd1.*)
   dynamic_linker=no
   ;;
 
@@ -8877,7 +8877,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[123].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -8895,7 +8895,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -10409,7 +10409,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10423 "configure"
+#line 10412 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -20818,6 +20818,11 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+cat >>confdefs.h <<_ACEOF
+#define LLVM_HOST_TRIPLE "$host"
+_ACEOF
+
+
 cat >>confdefs.h <<_ACEOF
 #define LLVM_DEFAULT_TARGET_TRIPLE "$target"
 _ACEOF