summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2011-03-21 20:40:05 +0000
committerBob Wilson <bob.wilson@apple.com>2011-03-21 20:40:05 +0000
commitd9249414b385d15d5ef0c0777c5110ac65d7c534 (patch)
tree5c44ff8a49256f75706f8a5bd3dcfcc5fb8ee5b4
parentd39242369a4b057be597f65bc8d1f88c350d1696 (diff)
downloadbcm5719-llvm-d9249414b385d15d5ef0c0777c5110ac65d7c534.tar.gz
bcm5719-llvm-d9249414b385d15d5ef0c0777c5110ac65d7c534.zip
Add clang support for cortex-m0 cpus. Patch by James Orr.
llvm-svn: 128018
-rw-r--r--clang/lib/Driver/ToolChain.cpp8
-rw-r--r--clang/lib/Driver/ToolChains.cpp3
-rw-r--r--clang/lib/Driver/Tools.cpp2
3 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index e305683930c..06998a5edeb 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -101,6 +101,8 @@ static const char *getARMTargetCPU(const ArgList &Args,
return "iwmmxt";
if (MArch == "xscale")
return "xscale";
+ if (MArch == "armv6m" || MArch == "armv6-m")
+ return "cortex-m0";
// If all else failed, return the most base CPU LLVM supports.
return "arm7tdmi";
@@ -137,6 +139,12 @@ static const char *getLLVMArchSuffixForARM(llvm::StringRef CPU) {
if (CPU == "cortex-a8" || CPU == "cortex-a9")
return "v7";
+ if (CPU == "cortex-m3")
+ return "v7m";
+
+ if (CPU == "cortex-m0")
+ return "v6m";
+
return "";
}
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index d4691ac86ef..6127d45fa3a 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -101,7 +101,8 @@ static const char *GetArmArchForMCpu(llvm::StringRef Value) {
return "xscale";
if (Value == "arm1136j-s" || Value == "arm1136jf-s" ||
- Value == "arm1176jz-s" || Value == "arm1176jzf-s")
+ Value == "arm1176jz-s" || Value == "arm1176jzf-s" ||
+ Value == "cortex-m0" )
return "armv6";
if (Value == "cortex-a8" || Value == "cortex-r4" || Value == "cortex-m3")
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 5a4b7e29ba2..6bfe82a8a63 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -374,6 +374,8 @@ static const char *getARMTargetCPU(const ArgList &Args,
return "iwmmxt";
if (MArch == "xscale")
return "xscale";
+ if (MArch == "armv6m" || MArch == "armv6-m")
+ return "cortex-m0";
// If all else failed, return the most base CPU LLVM supports.
return "arm7tdmi";
OpenPOWER on IntegriCloud