mirror of https://github.com/microsoft/clang.git
[ARM] Pass subtarget feature "+reserve-r9" instead of passing backend
option "-arm-reserve-r9". This recommits r242736, which had to be reverted because the llvm-side change that was committed in r242737 caused the number of subtarget features to go over the limit of 64. This change is needed since backend options do not make it to the backend when doing LTO and are not capable of changing the behavior of code-gen passes on a per-function basis. rdar://problem/21529937 Differential Revision: http://reviews.llvm.org/D11319 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242755 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ce95e4dcf4
commit
c2e7bae2f2
|
@ -719,6 +719,12 @@ static void getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
|
|||
Features.push_back("+long-calls");
|
||||
}
|
||||
|
||||
// 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))
|
||||
Features.push_back("+reserve-r9");
|
||||
|
||||
// The kext linker doesn't know how to deal with movw/movt.
|
||||
if (KernelOrKext)
|
||||
Features.push_back("+no-movt");
|
||||
|
@ -828,13 +834,6 @@ void Clang::AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs,
|
|||
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");
|
||||
}
|
||||
}
|
||||
|
||||
/// getAArch64TargetCPU - Get the (LLVM) name of the AArch64 cpu we are
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang -target arm-none-gnueabi -ffixed-r9 -### %s 2> %t
|
||||
// RUN: FileCheck --check-prefix=CHECK-FIXED-R9 < %t %s
|
||||
|
||||
// CHECK-FIXED-R9: "-backend-option" "-arm-reserve-r9"
|
||||
// CHECK-FIXED-R9: "-target-feature" "+reserve-r9"
|
||||
|
|
Loading…
Reference in New Issue