Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Jan 2015 21:19:24 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r277775 - in head/contrib/llvm/tools/clang: include/clang/Driver lib/Driver
Message-ID:  <201501262119.t0QLJOma072645@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Mon Jan 26 21:19:24 2015
New Revision: 277775
URL: https://svnweb.freebsd.org/changeset/base/277775

Log:
  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

Modified:
  head/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp

Modified: head/contrib/llvm/tools/clang/include/clang/Driver/Options.td
==============================================================================
--- head/contrib/llvm/tools/clang/include/clang/Driver/Options.td	Mon Jan 26 21:17:14 2015	(r277774)
+++ head/contrib/llvm/tools/clang/include/clang/Driver/Options.td	Mon Jan 26 21:19:24 2015	(r277775)
@@ -1141,6 +1141,9 @@ def mno_long_calls : Flag<["-"], "mno-lo
 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>;

Modified: head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Mon Jan 26 21:17:14 2015	(r277774)
+++ head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Mon Jan 26 21:19:24 2015	(r277775)
@@ -887,6 +887,11 @@ void Clang::AddAArch64TargetArgs(const A
     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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501262119.t0QLJOma072645>