mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
SubArch support in MCJIT unittest
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182220 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
21886a495a
commit
4e4464bf74
@ -35,6 +35,13 @@ protected:
|
||||
SupportedArchs.push_back(Triple::x86);
|
||||
SupportedArchs.push_back(Triple::x86_64);
|
||||
|
||||
// Some architectures have sub-architectures in which tests will fail, like
|
||||
// ARM. These two vectors will define if they do have sub-archs (to avoid
|
||||
// extra work for those who don't), and if so, if they are listed to work
|
||||
HasSubArchs.push_back(Triple::arm);
|
||||
SupportedSubArchs.push_back("armv6");
|
||||
SupportedSubArchs.push_back("armv7");
|
||||
|
||||
// The operating systems below are known to be sufficiently incompatible
|
||||
// that they will fail the MCJIT C API tests.
|
||||
UnsupportedOSs.push_back(Triple::Cygwin);
|
||||
|
@ -49,11 +49,23 @@ protected:
|
||||
/// Returns true if the host architecture is known to support MCJIT
|
||||
bool ArchSupportsMCJIT() {
|
||||
Triple Host(HostTriple);
|
||||
// If ARCH is not supported, bail
|
||||
if (std::find(SupportedArchs.begin(), SupportedArchs.end(), Host.getArch())
|
||||
== SupportedArchs.end()) {
|
||||
== SupportedArchs.end())
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
// If ARCH is supported and has no specific sub-arch support
|
||||
if (std::find(HasSubArchs.begin(), HasSubArchs.end(), Host.getArch())
|
||||
== HasSubArchs.end())
|
||||
return true;
|
||||
|
||||
// If ARCH has sub-arch support, find it
|
||||
SmallVectorImpl<std::string>::const_iterator I = SupportedSubArchs.begin();
|
||||
for(; I != SupportedSubArchs.end(); ++I)
|
||||
if (Host.getArchName().startswith(I->c_str()))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Returns true if the host OS is known to support MCJIT
|
||||
@ -68,6 +80,8 @@ protected:
|
||||
|
||||
std::string HostTriple;
|
||||
SmallVector<Triple::ArchType, 4> SupportedArchs;
|
||||
SmallVector<Triple::ArchType, 1> HasSubArchs;
|
||||
SmallVector<std::string, 2> SupportedSubArchs; // We need to own the memory
|
||||
SmallVector<Triple::OSType, 4> UnsupportedOSs;
|
||||
};
|
||||
|
||||
|
@ -50,6 +50,13 @@ protected:
|
||||
SupportedArchs.push_back(Triple::x86);
|
||||
SupportedArchs.push_back(Triple::x86_64);
|
||||
|
||||
// Some architectures have sub-architectures in which tests will fail, like
|
||||
// ARM. These two vectors will define if they do have sub-archs (to avoid
|
||||
// extra work for those who don't), and if so, if they are listed to work
|
||||
HasSubArchs.push_back(Triple::arm);
|
||||
SupportedSubArchs.push_back("armv6");
|
||||
SupportedSubArchs.push_back("armv7");
|
||||
|
||||
// The operating systems below are known to be incompatible with MCJIT as
|
||||
// they are copied from the test/ExecutionEngine/MCJIT/lit.local.cfg and
|
||||
// should be kept in sync.
|
||||
|
Loading…
Reference in New Issue
Block a user