Default to armv7 cpu for NaCl when march=arm
authorDerek Schuff <dschuff@google.com>
Thu, 26 Mar 2015 21:58:46 +0000 (21:58 +0000)
committerDerek Schuff <dschuff@google.com>
Thu, 26 Mar 2015 21:58:46 +0000 (21:58 +0000)
Summary:
When the arch is given as "arm" clang uses the default target CPU from
LLVM to determine what the real arch should be (i.e. "arm" becomes
"armv4t" because LLVM's getARMCPUForArch falls back to "arm7tdmi").
Default to "cortex-a8" so that we end up with "armv7" in clang.

the nacl-direct.c test in clang also covers this case.

Differential Revision: http://reviews.llvm.org/D8589

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233321 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/Triple.cpp
unittests/ADT/TripleTest.cpp

index e9a22429883d8a44235e2dd48e64cc61fb6c46d8..d4b150a6cb18fc1c70412e595b1f17154cdbcb98 100644 (file)
@@ -1137,6 +1137,8 @@ const char *Triple::getARMCPUForArch(StringRef MArch) const {
     default:
       return "strongarm";
     }
+  case llvm::Triple::NaCl:
+    return "cortex-a8";
   default:
     switch (getEnvironment()) {
     case llvm::Triple::EABIHF:
index 230f2ab7e1e7331ae7f05452f60550db0f9cc9f0..1113bb60dc4c0f3a2bb928b8b921abe693fca47c 100644 (file)
@@ -669,6 +669,10 @@ TEST(TripleTest, getARMCPUForArch) {
     EXPECT_STREQ("cortex-a8", Triple.getARMCPUForArch());
     EXPECT_STREQ("swift", Triple.getARMCPUForArch("armv7s"));
   }
+  {
+    llvm::Triple Triple("arm--nacl");
+    EXPECT_STREQ("cortex-a8", Triple.getARMCPUForArch("arm"));
+  }
 }
 }