From: Renato Golin Date: Wed, 27 May 2015 19:49:53 +0000 (+0000) Subject: ARMTargetParser: Make BSD Thumb/BE armv6 work X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=deae59fceb40f5036afec17435473177b9778cb1 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 --- diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp index a63426f8857..a1ee18809ca 100644 --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp @@ -1113,8 +1113,8 @@ const char *Triple::getARMCPUForArch(StringRef MArch) const { switch (getOS()) { case llvm::Triple::FreeBSD: case llvm::Triple::NetBSD: - // FIXME: This doesn't work on BE/thumb variants. - if (MArch == "armv6") + MArch = ARMTargetParser::getCanonicalArchName(MArch); + if (!MArch.empty() && MArch == "v6") return "arm1176jzf-s"; break; case llvm::Triple::Win32: diff --git a/unittests/ADT/TripleTest.cpp b/unittests/ADT/TripleTest.cpp index b0f01b26e72..23a9128a8f2 100644 --- a/unittests/ADT/TripleTest.cpp +++ b/unittests/ADT/TripleTest.cpp @@ -799,6 +799,14 @@ TEST(TripleTest, getARMCPUForArch) { llvm::Triple Triple("armv6-unknown-freebsd"); 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"); EXPECT_STREQ("cortex-a9", Triple.getARMCPUForArch());