Use (void *)(intptr_t) to cast function addresses to void*
[oota-llvm.git] / tools / lto / LTOModule.cpp
index 4a2c5ad1dc3dcac9c6cc81c99ad462cd1a961ba1..cbfb04861f5a01f3e33e5367a8aeb3507d99e179 100644 (file)
@@ -24,6 +24,7 @@
 #include "llvm/Support/Mangler.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MathExtras.h"
+#include "llvm/System/Host.h"
 #include "llvm/System/Path.h"
 #include "llvm/System/Process.h"
 #include "llvm/Target/SubtargetFeature.h"
@@ -149,17 +150,19 @@ LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer,
     OwningPtr<Module> m(ParseBitcodeFile(buffer, getGlobalContext(), &errMsg));
     if ( !m )
         return NULL;
+
+    std::string Triple = m->getTargetTriple();
+    if (Triple.empty())
+      Triple = sys::getHostTriple();
+
     // find machine architecture for this module
-    const Target* march = TargetRegistry::lookupTarget(m->getTargetTriple(), 
-                                                       /*FallbackToHost=*/true,
-                                                       /*RequireJIT=*/false,
-                                                       errMsg);
+    const Target* march = TargetRegistry::lookupTarget(Triple, errMsg);
     if ( march == NULL ) 
         return NULL;
 
     // construct LTModule, hand over ownership of module and target
-    std::string FeatureStr = getFeatureString(m->getTargetTriple().c_str());
-    TargetMachine* target = march->createTargetMachine(*m, FeatureStr);
+    std::string FeatureStr = getFeatureString(Triple.c_str());
+    TargetMachine* target = march->createTargetMachine(Triple, FeatureStr);
     return new LTOModule(m.take(), target);
 }