diff options
Diffstat (limited to 'contrib/llvm/patches/patch-31-clang-r227062-fixes-x18.diff')
-rw-r--r-- | contrib/llvm/patches/patch-31-clang-r227062-fixes-x18.diff | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/contrib/llvm/patches/patch-31-clang-r227062-fixes-x18.diff b/contrib/llvm/patches/patch-31-clang-r227062-fixes-x18.diff deleted file mode 100644 index 4e2f956..0000000 --- a/contrib/llvm/patches/patch-31-clang-r227062-fixes-x18.diff +++ /dev/null @@ -1,54 +0,0 @@ -Pull in r227062 from upstream clang trunk (by Renato Golin): - - Allows Clang to use LLVM's fixes-x18 option - - This patch allows clang to have llvm reserve the x18 - platform register on AArch64. FreeBSD will use this in the kernel for - per-cpu data but has no need to reserve this register in userland so - will need this flag to reserve it. - - This uses llvm r226664 to allow this register to be reserved. - - Patch by Andrew Turner. - -Introduced here: http://svnweb.freebsd.org/changeset/base/277775 - -Index: tools/clang/include/clang/Driver/Options.td -=================================================================== ---- tools/clang/include/clang/Driver/Options.td -+++ tools/clang/include/clang/Driver/Options.td -@@ -1141,6 +1141,9 @@ def mno_long_calls : Flag<["-"], "mno-long-calls"> - def mgeneral_regs_only : Flag<["-"], "mgeneral-regs-only">, Group<m_aarch64_Features_Group>, - HelpText<"Generate code which only uses the general purpose registers (AArch64 only)">; - -+def ffixed_x18 : Flag<["-"], "ffixed-x18">, Group<m_aarch64_Features_Group>, -+ HelpText<"Reserve the x18 register (AArch64 only)">; -+ - def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>; - def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>; - def mfprnd : Flag<["-"], "mfprnd">, Group<m_ppc_Features_Group>; -Index: tools/clang/lib/Driver/Tools.cpp -=================================================================== ---- tools/clang/lib/Driver/Tools.cpp -+++ tools/clang/lib/Driver/Tools.cpp -@@ -887,6 +887,11 @@ void Clang::AddAArch64TargetArgs(const ArgList &Ar - if (A->getOption().matches(options::OPT_mno_global_merge)) - CmdArgs.push_back("-mno-global-merge"); - } -+ -+ if (Args.hasArg(options::OPT_ffixed_x18)) { -+ CmdArgs.push_back("-backend-option"); -+ CmdArgs.push_back("-aarch64-reserve-x18"); -+ } - } - - // Get CPU and ABI names. They are not independent -Index: tools/clang/test/Driver/aarch64-fixed-x18.c -=================================================================== ---- tools/clang/test/Driver/aarch64-fixed-x18.c -+++ tools/clang/test/Driver/aarch64-fixed-x18.c -@@ -0,0 +1,4 @@ -+// RUN: %clang -target aarch64-none-gnu -ffixed-x18 -### %s 2> %t -+// RUN: FileCheck --check-prefix=CHECK-FIXED-X18 < %t %s -+ -+// CHECK-FIXED-X18: "-backend-option" "-aarch64-reserve-x18" |