diff options
| author | Tim Northover <tnorthover@apple.com> | 2013-10-24 10:48:50 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2013-10-24 10:48:50 +0000 |
| commit | 901dee4d28d1993d0bf21d660bccf9039b0ff095 (patch) | |
| tree | 1f39d25b0c160b8f9ea6e221e8ea10308d63206e /clang/lib | |
| parent | 94ecbd2e6c05316c25349eec88a99f40c83995ce (diff) | |
| download | bcm5719-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.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 16 |
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(); } |

