From c9f61e8be981fff495d17af3e838a6768044bfcf Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Mon, 7 Apr 2014 16:14:38 +0000 Subject: [PATCH] clang-cl: make /Gw map to -fdata-sections Note that /Gy no longer implies -fdata-sections. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205716 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/CLCompatOptions.td | 4 ++++ lib/Driver/Tools.cpp | 11 +++++------ test/Driver/cl-fallback.c | 4 +++- test/Driver/cl-options.c | 8 ++++++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/include/clang/Driver/CLCompatOptions.td b/include/clang/Driver/CLCompatOptions.td index 2bfc78ed1b..a4881e24ff 100644 --- a/include/clang/Driver/CLCompatOptions.td +++ b/include/clang/Driver/CLCompatOptions.td @@ -66,6 +66,10 @@ def _SLASH_Gy : CLFlag<"Gy">, HelpText<"Put each function in its own section">, Alias; def _SLASH_Gy_ : CLFlag<"Gy-">, HelpText<"Don't put each function in its own section">, Alias; +def _SLASH_Gw : CLFlag<"Gw">, HelpText<"Put each data item in its own section">, + Alias; +def _SLASH_Gw_ : CLFlag<"Gw-">, HelpText<"Don't put each data item in its own section">, + Alias; def _SLASH_help : CLFlag<"help">, Alias, HelpText<"Display available options">; def _SLASH_HELP : CLFlag<"HELP">, Alias; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index cd369d72eb..83e302c9c6 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -4254,12 +4254,6 @@ void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs) const { if (!Args.hasArg(options::OPT_frtti, options::OPT_fno_rtti)) CmdArgs.push_back("-fno-rtti"); - // Let -ffunction-sections imply -fdata-sections. - if (Arg * A = Args.getLastArg(options::OPT_ffunction_sections, - options::OPT_fno_function_sections)) - if (A->getOption().matches(options::OPT_ffunction_sections)) - CmdArgs.push_back("-fdata-sections"); - const Driver &D = getToolChain().getDriver(); Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg); Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb); @@ -7538,6 +7532,11 @@ Command *visualstudio::Compile::GetCommand(Compilation &C, const JobAction &JA, CmdArgs.push_back(A->getOption().getID() == options::OPT_ffunction_sections ? "/Gy" : "/Gy-"); + if (Arg *A = Args.getLastArg(options::OPT_fdata_sections, + options::OPT_fno_data_sections)) + CmdArgs.push_back(A->getOption().getID() == options::OPT_ffunction_sections + ? "/Gw" + : "/Gw-"); if (Args.hasArg(options::OPT_fsyntax_only)) CmdArgs.push_back("/Zs"); if (Args.hasArg(options::OPT_g_Flag, options::OPT_gline_tables_only)) diff --git a/test/Driver/cl-fallback.c b/test/Driver/cl-fallback.c index d90e5fa496..a8279d3d09 100644 --- a/test/Driver/cl-fallback.c +++ b/test/Driver/cl-fallback.c @@ -5,7 +5,8 @@ // command-line option, e.g. on Mac where %s is commonly under /Users. // RUN: %clang_cl /fallback /Dfoo=bar /Ubaz /Ifoo /O0 /Ox /GR /GR- /Gy /Gy- \ -// RUN: /LD /LDd /MD /MDd /MTd /MT /FImyheader.h /Zi -### -- %s 2>&1 \ +// RUN: /Gw /Gw- /LD /LDd /MD /MDd /MTd /MT /FImyheader.h /Zi \ +// RUN: -### -- %s 2>&1 \ // RUN: | FileCheck %s // CHECK: "-fdiagnostics-format" "msvc-fallback" // CHECK: || @@ -19,6 +20,7 @@ // CHECK: "/Ox" // CHECK: "/GR-" // CHECK: "/Gy-" +// CHECK: "/Gw-" // CHECK: "/Z7" // CHECK: "/FImyheader.h" // CHECK: "/LD" diff --git a/test/Driver/cl-options.c b/test/Driver/cl-options.c index 84fa2699ee..a76626464a 100644 --- a/test/Driver/cl-options.c +++ b/test/Driver/cl-options.c @@ -25,13 +25,17 @@ // GR_: -fno-rtti // RUN: %clang_cl /Gy -### -- %s 2>&1 | FileCheck -check-prefix=Gy %s -// Gy: -fdata-sections // Gy: -ffunction-sections // RUN: %clang_cl /Gy /Gy- -### -- %s 2>&1 | FileCheck -check-prefix=Gy_ %s -// Gy_-NOT: -fdata-sections // Gy_-NOT: -ffunction-sections +// RUN: %clang_cl /Gw -### -- %s 2>&1 | FileCheck -check-prefix=Gw %s +// Gw: -fdata-sections + +// RUN: %clang_cl /Gw /Gw- -### -- %s 2>&1 | FileCheck -check-prefix=Gw_ %s +// Gw_-NOT: -fdata-sections + // RUN: %clang_cl /Imyincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_I %s // RUN: %clang_cl /I myincludedir -### -- %s 2>&1 | FileCheck -check-prefix=SLASH_I %s // SLASH_I: "-I" "myincludedir" -- 2.40.0