Skip MCJIT unit tests if LLVM is not configured for native compilation

Patch by Sergej Jaskiewicz!

Differential Revision: D67089

llvm-svn: 370812
This commit is contained in:
David Blaikie 2019-09-03 19:30:45 +00:00
parent e331d50534
commit 4a07bba31c
1 changed files with 7 additions and 1 deletions

View File

@ -21,13 +21,14 @@
#include "llvm/InitializePasses.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/TargetRegistry.h"
// Used to skip tests on unsupported architectures and operating systems.
// To skip a test, add this macro at the top of a test-case in a suite that
// inherits from MCJITTestBase. See MCJITTest.cpp for examples.
#define SKIP_UNSUPPORTED_PLATFORM \
do \
if (!ArchSupportsMCJIT() || !OSSupportsMCJIT()) \
if (!ArchSupportsMCJIT() || !OSSupportsMCJIT() || !HostCanBeTargeted()) \
return; \
while(0)
@ -52,6 +53,11 @@ protected:
HostTriple = Triple::normalize(HostTriple);
}
bool HostCanBeTargeted() {
std::string Error;
return TargetRegistry::lookupTarget(HostTriple, Error) != nullptr;
}
/// Returns true if the host architecture is known to support MCJIT
bool ArchSupportsMCJIT() {
Triple Host(HostTriple);