summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2013-10-24 10:48:50 +0000
committerTim Northover <tnorthover@apple.com>2013-10-24 10:48:50 +0000
commit901dee4d28d1993d0bf21d660bccf9039b0ff095 (patch)
tree1f39d25b0c160b8f9ea6e221e8ea10308d63206e /clang/lib
parent94ecbd2e6c05316c25349eec88a99f40c83995ce (diff)
downloadbcm5719-llvm-901dee4d28d1993d0bf21d660bccf9039b0ff095.tar.gz
bcm5719-llvm-901dee4d28d1993d0bf21d660bccf9039b0ff095.zip
ARM-Darwin: Use the *-*-darwin-eabi triple for v6m & v7m archs
These arch arguments are used for embedded targets (obviously) which need a different calling convention to iOS. llvm-svn: 193328
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Basic/Targets.cpp4
-rw-r--r--clang/lib/Driver/ToolChains.cpp16
2 files changed, 15 insertions, 5 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 843cc1bbf84..4deaa640f8a 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -149,7 +149,9 @@ static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
Str[4] = '0' + (Rev % 10);
Str[5] = '\0';
Builder.defineMacro("__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__", Str);
- } else {
+ } else if (Triple.getArchName() != "thumbv6m" &&
+ Triple.getArchName() != "thumbv7m" &&
+ Triple.getArchName() != "thumbv7em") {
// Note that the Driver allows versions which aren't representable in the
// define (because we only get a single digit for the minor and micro
// revision numbers). So, we limit them to the maximum representable
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index ec0d8f387cd..d45966c459f 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -167,10 +167,18 @@ std::string Darwin::ComputeEffectiveClangTriple(const ArgList &Args,
if (!isTargetInitialized())
return Triple.getTriple();
- SmallString<16> Str;
- Str += isTargetIPhoneOS() ? "ios" : "macosx";
- Str += getTargetVersion().getAsString();
- Triple.setOSName(Str);
+ if (Triple.getArchName() == "thumbv6m" ||
+ Triple.getArchName() == "thumbv7m" ||
+ Triple.getArchName() == "thumbv7em") {
+ // OS is ios or macosx unless it's the v6m or v7m.
+ Triple.setOS(llvm::Triple::Darwin);
+ Triple.setEnvironment(llvm::Triple::EABI);
+ } else {
+ SmallString<16> Str;
+ Str += isTargetIPhoneOS() ? "ios" : "macosx";
+ Str += getTargetVersion().getAsString();
+ Triple.setOSName(Str);
+ }
return Triple.getTriple();
}
OpenPOWER on IntegriCloud