diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ExecutionEngine/JIT/TargetSelect.cpp | 5 | ||||
-rw-r--r-- | lib/Support/TargetRegistry.cpp | 25 | ||||
-rw-r--r-- | lib/Target/CBackend/CBackend.cpp | 6 |
3 files changed, 13 insertions, 23 deletions
diff --git a/lib/ExecutionEngine/JIT/TargetSelect.cpp b/lib/ExecutionEngine/JIT/TargetSelect.cpp index 55ff44121d..c30a698822 100644 --- a/lib/ExecutionEngine/JIT/TargetSelect.cpp +++ b/lib/ExecutionEngine/JIT/TargetSelect.cpp @@ -51,10 +51,7 @@ TargetMachine *JIT::selectTarget(ModuleProvider *MP, std::string *ErrorStr) { std::string Error; const Target *TheTarget = - TargetRegistry::lookupTarget(TheTriple.getTriple(), - /*FallbackToHost=*/false, - /*RequireJIT=*/false, - Error); + TargetRegistry::lookupTarget(TheTriple.getTriple(), Error); if (TheTarget == 0) { if (ErrorStr) *ErrorStr = Error; diff --git a/lib/Support/TargetRegistry.cpp b/lib/Support/TargetRegistry.cpp index c60322bdcd..79f30a71f2 100644 --- a/lib/Support/TargetRegistry.cpp +++ b/lib/Support/TargetRegistry.cpp @@ -20,8 +20,6 @@ TargetRegistry::iterator TargetRegistry::begin() { } const Target *TargetRegistry::lookupTarget(const std::string &TT, - bool FallbackToHost, - bool RequireJIT, std::string &Error) { // Provide special warning when no targets are initialized. if (begin() == end()) { @@ -31,9 +29,6 @@ const Target *TargetRegistry::lookupTarget(const std::string &TT, const Target *Best = 0, *EquallyBest = 0; unsigned BestQuality = 0; for (iterator it = begin(), ie = end(); it != ie; ++it) { - if (RequireJIT && !it->hasJIT()) - continue; - if (unsigned Qual = it->TripleMatchQualityFn(TT)) { if (!Best || Qual > BestQuality) { Best = &*it; @@ -44,15 +39,6 @@ const Target *TargetRegistry::lookupTarget(const std::string &TT, } } - // FIXME: Hack. If we only have an extremely weak match and the client - // requested to fall back to the host, then ignore it and try again. - if (BestQuality == 1 && FallbackToHost) - Best = 0; - - // Fallback to the host triple if we didn't find anything. - if (!Best && FallbackToHost) - return lookupTarget(sys::getHostTriple(), false, RequireJIT, Error); - if (!Best) { Error = "No available targets are compatible with this triple"; return 0; @@ -92,3 +78,14 @@ void TargetRegistry::RegisterTarget(Target &T, T.HasJIT = HasJIT; } +const Target *TargetRegistry::getClosestTargetForJIT(std::string &Error) { + const Target *TheTarget = lookupTarget(sys::getHostTriple(), Error); + + if (TheTarget && !TheTarget->hasJIT()) { + Error = "No JIT compatible target available for this host"; + return 0; + } + + return TheTarget; +} + diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index c014006f54..7a43233cfc 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -3186,11 +3186,7 @@ std::string CWriter::InterpretASMConstraint(InlineAsm::ConstraintInfo& c) { Triple = llvm::sys::getHostTriple(); std::string E; - const Target *Match = - TargetRegistry::lookupTarget(Triple, - /*FallbackToHost=*/false, - /*RequireJIT=*/false, - E); + const Target *Match = TargetRegistry::lookupTarget(Triple, E); if (Match) { // Per platform Target Machines don't exist, so create it; // this must be done only once. |