summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver
diff options
context:
space:
mode:
authorRenato Golin <renato.golin@linaro.org>2013-08-24 14:44:35 +0000
committerRenato Golin <renato.golin@linaro.org>2013-08-24 14:44:35 +0000
commitdbb77e60dc8b6dedd98804cd1667d2d295e306b6 (patch)
treed12d135f11a64baa0ca6a27fe6e61b65a4936ec6 /clang/lib/Driver
parent07f383f87aa756fb45c686af4ec1813abedb3c61 (diff)
downloadbcm5719-llvm-dbb77e60dc8b6dedd98804cd1667d2d295e306b6.tar.gz
bcm5719-llvm-dbb77e60dc8b6dedd98804cd1667d2d295e306b6.zip
Add the -ffixed-r9 flag for ARM.
This patch adds the -ffixed-r9 flag to clang to instruct llvm to globally preserve the contents of r9. The flag is added to the newly created ARM specific group. While at it, also place marm / mno-thumb in that group. Patch by Jeroen Hofstee. llvm-svn: 189174
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r--clang/lib/Driver/Tools.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 25be6b48b66..71cbcb292f7 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -795,6 +795,14 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
options::OPT_mno_implicit_float,
true))
CmdArgs.push_back("-no-implicit-float");
+
+ // llvm does not support reserving registers in general. There is support
+ // for reserving r9 on ARM though (defined as a platform-specific register
+ // in ARM EABI).
+ if (Args.hasArg(options::OPT_ffixed_r9)) {
+ CmdArgs.push_back("-backend-option");
+ CmdArgs.push_back("-arm-reserve-r9");
+ }
}
// Translate MIPS CPU name alias option to CPU name.
OpenPOWER on IntegriCloud