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