From: Akira Hatanaka Date: Sat, 25 Jul 2015 00:18:00 +0000 (+0000) Subject: [AArch64] Pass subtarget feature "+reserve-x18" instead of passing backend X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c870493a19bf05d129de653708dde3f53522d13d;p=clang [AArch64] Pass subtarget feature "+reserve-x18" instead of passing backend option "-aarch64-reserve-x18". 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/D11462 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243185 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 46a309fb83..f99c81866c 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -919,11 +919,6 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args, else CmdArgs.push_back("-aarch64-global-merge=true"); } - - 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 @@ -1971,6 +1966,9 @@ static void getAArch64TargetFeatures(const Driver &D, const ArgList &Args, else Features.push_back("-crc"); } + + if (Args.hasArg(options::OPT_ffixed_x18)) + Features.push_back("+reserve-x18"); } static void getTargetFeatures(const Driver &D, const llvm::Triple &Triple,