From 52823954cb9d9d77e7956603c9e078beff92dabe Mon Sep 17 00:00:00 2001 From: dim Date: Mon, 26 Jan 2015 21:19:24 +0000 Subject: 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. Requested by: andrew --- contrib/llvm/tools/clang/lib/Driver/Tools.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'contrib/llvm/tools/clang/lib/Driver') diff --git a/contrib/llvm/tools/clang/lib/Driver/Tools.cpp b/contrib/llvm/tools/clang/lib/Driver/Tools.cpp index f33fb32..5acffb7 100644 --- a/contrib/llvm/tools/clang/lib/Driver/Tools.cpp +++ b/contrib/llvm/tools/clang/lib/Driver/Tools.cpp @@ -887,6 +887,11 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args, 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 -- cgit v1.1