ARMTargetParser: Make BSD Thumb/BE armv6 work

Simple change to make arch like "thumbv6" and "armbev6" to return the
correct CPU for FreeBSD and NetBSD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238353 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Renato Golin 2015-05-27 19:49:53 +00:00
parent 711655614b
commit deae59fceb
2 changed files with 10 additions and 2 deletions

View File

@ -1113,8 +1113,8 @@ const char *Triple::getARMCPUForArch(StringRef MArch) const {
switch (getOS()) { switch (getOS()) {
case llvm::Triple::FreeBSD: case llvm::Triple::FreeBSD:
case llvm::Triple::NetBSD: case llvm::Triple::NetBSD:
// FIXME: This doesn't work on BE/thumb variants. MArch = ARMTargetParser::getCanonicalArchName(MArch);
if (MArch == "armv6") if (!MArch.empty() && MArch == "v6")
return "arm1176jzf-s"; return "arm1176jzf-s";
break; break;
case llvm::Triple::Win32: case llvm::Triple::Win32:

View File

@ -799,6 +799,14 @@ TEST(TripleTest, getARMCPUForArch) {
llvm::Triple Triple("armv6-unknown-freebsd"); llvm::Triple Triple("armv6-unknown-freebsd");
EXPECT_STREQ("arm1176jzf-s", Triple.getARMCPUForArch()); EXPECT_STREQ("arm1176jzf-s", Triple.getARMCPUForArch());
} }
{
llvm::Triple Triple("thumbv6-unknown-freebsd");
EXPECT_STREQ("arm1176jzf-s", Triple.getARMCPUForArch());
}
{
llvm::Triple Triple("armebv6-unknown-freebsd");
EXPECT_STREQ("arm1176jzf-s", Triple.getARMCPUForArch());
}
{ {
llvm::Triple Triple("arm--win32"); llvm::Triple Triple("arm--win32");
EXPECT_STREQ("cortex-a9", Triple.getARMCPUForArch()); EXPECT_STREQ("cortex-a9", Triple.getARMCPUForArch());