From: Jessica Paquette Date: Tue, 8 May 2018 20:58:32 +0000 (+0000) Subject: Add a mno-outline flag to disable the MachineOutliner X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=50e18ec7d605a926997379f3d29f8007cbd8c7eb;p=clang Add a mno-outline flag to disable the MachineOutliner Since we're working on turning the MachineOutliner by default under -Oz for AArch64, it makes sense to have an -mno-outline flag available. This currently doesn't do much (it basically just undoes -moutline). When the MachineOutliner is on by default under AArch64, this flag should set -mllvm -enable-machine-outliner=never. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331810 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index eec6adc3e8..5f6fbccd4c 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -1908,6 +1908,8 @@ def mms_bitfields : Flag<["-"], "mms-bitfields">, Group, Flags<[CC1Opti HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">; def moutline : Flag<["-"], "moutline">, Group, Flags<[CC1Option]>, HelpText<"Enable function outlining (AArch64 only)">; +def mno_outline : Flag<["-"], "mno-outline">, Group, Flags<[CC1Option]>, + HelpText<"Disable function outlining (AArch64 only)">; def mno_ms_bitfields : Flag<["-"], "mno-ms-bitfields">, Group, HelpText<"Do not set the default structure layout to be compatible with the Microsoft compiler standard">; def mstackrealign : Flag<["-"], "mstackrealign">, Group, Flags<[CC1Option]>, diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 762b5bdcdf..c72c69d144 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -1485,7 +1485,8 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args, CmdArgs.push_back("-aarch64-enable-global-merge=true"); } - if (Args.getLastArg(options::OPT_moutline)) { + if (!Args.hasArg(options::OPT_mno_outline) && + Args.getLastArg(options::OPT_moutline)) { CmdArgs.push_back("-mllvm"); CmdArgs.push_back("-enable-machine-outliner"); } diff --git a/test/Driver/aarch64-outliner.c b/test/Driver/aarch64-outliner.c index bd41e8dcae..94034566b3 100644 --- a/test/Driver/aarch64-outliner.c +++ b/test/Driver/aarch64-outliner.c @@ -1,4 +1,9 @@ // REQUIRES: aarch64-registered-target -// RUN: %clang -target aarch64 -moutline -S %s -### 2>&1 | FileCheck %s -// CHECK: "-mllvm" "-enable-machine-outliner" +// RUN: %clang -target aarch64 -moutline -S %s -### 2>&1 | FileCheck %s -check-prefix=ON +// ON: "-mllvm" "-enable-machine-outliner" + +// RUN: %clang -target aarch64 -moutline -mno-outline -S %s -### 2>&1 | FileCheck %s -check-prefix=OFF1 +// RUN: %clang -target aarch64 -mno-outline -moutline -S %s -### 2>&1 | FileCheck %s -check-prefix=OFF2 +// OFF1-NOT: "-mllvm" "-enable-machine-outliner" +// OFF2-NOT: "-mllvm" "-enable-machine-outliner"