r274991 - [clang-cl] Add support for /Zd

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 11 07:18:05 PDT 2016


VS2013's cl.exe doesn't understand /Zd, 2015's doesn't either. This means
people who want to ask clang-cl for line tables only will have to add this
flag in some if(is_clang) block in their build file anyways. What's the
advantage of giving this flag a spelling that's different from both cl and
clang? With -gline-tables-only, an if(is_clang) works on Linux, Mac,
Windows.

(Even if there's a good case for /Zd, I don't think we should remove
user-exposed flags without a strong reason, so even if we keep /Zd I think
we should also keep exposing -gline-tables-only.)

On Mon, Jul 11, 2016 at 10:08 AM, Nico Weber <thakis at chromium.org> wrote:

> This breaks existing users of -gline-tables-only. What's the motivation
> for this change?
>
> On Sat, Jul 9, 2016 at 5:49 PM, David Majnemer via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: majnemer
>> Date: Sat Jul  9 16:49:16 2016
>> New Revision: 274991
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=274991&view=rev
>> Log:
>> [clang-cl] Add support for /Zd
>>
>> MASM (ML.exe and ML64.exe) and older versions of MSVC (CL.exe) support a
>> flag called /Zd which is more-or-less -gline-tables-only.
>>
>> It seems nicer to support this flag instead of exposing
>> -gline-tables-only.
>>
>> Modified:
>>     cfe/trunk/include/clang/Driver/CLCompatOptions.td
>>     cfe/trunk/include/clang/Driver/Options.td
>>     cfe/trunk/lib/Driver/Tools.cpp
>>     cfe/trunk/test/Driver/cl-options.c
>>
>> Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CLCompatOptions.td?rev=274991&r1=274990&r2=274991&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/CLCompatOptions.td (original)
>> +++ cfe/trunk/include/clang/Driver/CLCompatOptions.td Sat Jul  9 16:49:16
>> 2016
>> @@ -166,6 +166,8 @@ def _SLASH_Zc_trigraphs_off : CLFlag<"Zc
>>    HelpText<"Disable trigraphs (default)">, Alias<fno_trigraphs>;
>>  def _SLASH_Z7 : CLFlag<"Z7">,
>>    HelpText<"Enable CodeView debug information in object files">;
>> +def _SLASH_Zd : CLFlag<"Zd">,
>> +  HelpText<"Emit debug line number tables only">;
>>  def _SLASH_Zi : CLFlag<"Zi">, Alias<_SLASH_Z7>,
>>    HelpText<"Alias for /Z7. Does not produce PDBs.">;
>>  def _SLASH_Zp : CLJoined<"Zp">,
>>
>> Modified: cfe/trunk/include/clang/Driver/Options.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=274991&r1=274990&r2=274991&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>> +++ cfe/trunk/include/clang/Driver/Options.td Sat Jul  9 16:49:16 2016
>> @@ -1229,7 +1229,7 @@ def fdebug_prefix_map_EQ
>>  def g_Flag : Flag<["-"], "g">, Group<g_Group>,
>>    HelpText<"Generate source-level debug information">;
>>  def gline_tables_only : Flag<["-"], "gline-tables-only">,
>> Group<gN_Group>,
>> -  Flags<[CoreOption]>, HelpText<"Emit debug line number tables only">;
>> +  HelpText<"Emit debug line number tables only">;
>>  def gmlt : Flag<["-"], "gmlt">, Alias<gline_tables_only>;
>>  def g0 : Flag<["-"], "g0">, Group<gN_Group>;
>>  def g1 : Flag<["-"], "g1">, Group<gN_Group>, Alias<gline_tables_only>;
>>
>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=274991&r1=274990&r2=274991&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>> +++ cfe/trunk/lib/Driver/Tools.cpp Sat Jul  9 16:49:16 2016
>> @@ -6269,12 +6269,18 @@ void Clang::AddClangCLArgs(const ArgList
>>      CmdArgs.push_back(Args.MakeArgString(Twine(LangOptions::SSPStrong)));
>>    }
>>
>> -  // Emit CodeView if -Z7 is present.
>> -  *EmitCodeView = Args.hasArg(options::OPT__SLASH_Z7);
>> -  if (*EmitCodeView)
>> -    *DebugInfoKind = codegenoptions::LimitedDebugInfo;
>> -  if (*EmitCodeView)
>> +  // Emit CodeView if -Z7 or -Zd are present.
>> +  if (Arg *DebugInfoArg =
>> +          Args.getLastArg(options::OPT__SLASH_Z7,
>> options::OPT__SLASH_Zd)) {
>> +    *EmitCodeView = true;
>> +    if (DebugInfoArg->getOption().matches(options::OPT__SLASH_Z7))
>> +      *DebugInfoKind = codegenoptions::LimitedDebugInfo;
>> +    else
>> +      *DebugInfoKind = codegenoptions::DebugLineTablesOnly;
>>      CmdArgs.push_back("-gcodeview");
>> +  } else {
>> +    *EmitCodeView = false;
>> +  }
>>
>>    const Driver &D = getToolChain().getDriver();
>>    EHFlags EH = parseClangCLEHFlags(D, Args);
>> @@ -9964,7 +9970,8 @@ void visualstudio::Linker::ConstructJob(
>>
>>    CmdArgs.push_back("-nologo");
>>
>> -  if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7))
>> +  if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7,
>> +                  options::OPT__SLASH_Zd))
>>      CmdArgs.push_back("-debug");
>>
>>    bool DLL = Args.hasArg(options::OPT__SLASH_LD, options::OPT__SLASH_LDd,
>>
>> Modified: cfe/trunk/test/Driver/cl-options.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=274991&r1=274990&r2=274991&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Driver/cl-options.c (original)
>> +++ cfe/trunk/test/Driver/cl-options.c Sat Jul  9 16:49:16 2016
>> @@ -420,7 +420,7 @@
>>  // Z7: "-gcodeview"
>>  // Z7: "-debug-info-kind=limited"
>>
>> -// RUN: %clang_cl -gline-tables-only /Z7 /c -### -- %s 2>&1 | FileCheck
>> -check-prefix=Z7GMLT %s
>> +// RUN: %clang_cl /Zd /c -### -- %s 2>&1 | FileCheck
>> -check-prefix=Z7GMLT %s
>>  // Z7GMLT: "-gcodeview"
>>  // Z7GMLT: "-debug-info-kind=line-tables-only"
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160711/7fc8200e/attachment.html>


More information about the cfe-commits mailing list