<div style="font-family: arial, helvetica, sans-serif"><font size="2"><br><br><div class="gmail_quote">On Thu, Jun 21, 2012 at 12:27 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif"><font size="2"><div class="gmail_quote"><div class="im">On Thu, Jun 21, 2012 at 1:22 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: samsonov<br>
Date: Thu Jun 21 03:22:39 2012<br>
New Revision: 158906<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=158906&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=158906&view=rev</a><br>
Log:<br>
Improve support for -g options accepted by Clang:<br>
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0).<br>
2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle).<br>
3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches.<br></blockquote><div><br></div></div><div>Largely unrelated, but would you be up for adding a release note about -gline-tables-only?</div></div>
</font></div></blockquote><div><br></div><div>Sure, how do I do that?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif">
<font size="2"><div class="gmail_quote"><div><div class="h5"><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Added:<br>
    cfe/trunk/test/Driver/debug-unsupported.c<br>
Modified:<br>
    cfe/trunk/include/clang/Driver/Options.td<br>
    cfe/trunk/lib/Driver/Tools.cpp<br>
    cfe/trunk/test/Driver/debug-options.c<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=158906&r1=158905&r2=158906&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=158906&r1=158905&r2=158906&view=diff</a><br>


==============================================================================<br>
--- cfe/trunk/include/clang/Driver/Options.td (original)<br>
+++ cfe/trunk/include/clang/Driver/Options.td Thu Jun 21 03:22:39 2012<br>
@@ -33,6 +33,7 @@<br>
 def f_Group               : OptionGroup<"<f group>">, Group<CompileOnly_Group>;<br>
 def f_clang_Group         : OptionGroup<"<f (clang-only) group>">, Group<CompileOnly_Group>;<br>
 def g_Group               : OptionGroup<"<g group>">;<br>
+def g_flags_Group         : OptionGroup<"<g flags group>">;<br>
 def i_Group               : OptionGroup<"<i group>">, Group<CompileOnly_Group>;<br>
 def clang_i_Group         : OptionGroup<"<clang i group>">, Group<i_Group>;<br>
 def m_Group               : OptionGroup<"<m group>">, Group<CompileOnly_Group>;<br>
@@ -671,21 +672,34 @@<br>
 def fdata_sections : Flag <"-fdata-sections">, Group<f_Group>, Flags<[CC1Option]>,<br>
   HelpText<"Place each data in its own section (ELF Only)">;<br>
 def f : Joined<"-f">, Group<f_Group>;<br>
+def g_Flag : Flag<"-g">, Group<g_Group>,<br>
+  HelpText<"Generate source level debug information">, Flags<[CC1Option]>;<br>
+def gline_tables_only : Flag<"-gline-tables-only">, Group<g_Group>,<br>
+  HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>;<br>
 def g0 : Flag<"-g0">, Group<g_Group>;<br>
+def g1 : Flag<"-g1">, Group<g_Group>;<br>
 def g2 : Flag<"-g2">, Group<g_Group>;<br>
 def g3 : Flag<"-g3">, Group<g_Group>;<br>
-def gdwarf2 : Flag<"-gdwarf-2">, Group<g_Group>;<br>
-def gfull : Flag<"-gfull">, Group<g_Group>;<br>
 def ggdb : Flag<"-ggdb">, Group<g_Group>;<br>
-def gstabs : Flag<"-gstabs">, Group<g_Group>;<br>
-def gstabsplus : Flag<"-gstabs+">, Group<g_Group>;<br>
-def gstabs1 : Flag<"-gstabs1">, Group<g_Group>;<br>
-def gstabs2 : Flag<"-gstabs2">, Group<g_Group>;<br>
+def ggdb0 : Flag<"-ggdb0">, Group<g_Group>;<br>
+def ggdb1 : Flag<"-ggdb1">, Group<g_Group>;<br>
+def ggdb2 : Flag<"-ggdb2">, Group<g_Group>;<br>
+def ggdb3 : Flag<"-ggdb3">, Group<g_Group>;<br>
+def gdwarf_2 : Flag<"-gdwarf-2">, Group<g_Group>;<br>
+def gdwarf_3 : Flag<"-gdwarf-3">, Group<g_Group>;<br>
+def gdwarf_4 : Flag<"-gdwarf-4">, Group<g_Group>;<br>
+def gfull : Flag<"-gfull">, Group<g_Group>;<br>
 def gused : Flag<"-gused">, Group<g_Group>;<br>
-def g_Flag : Flag<"-g">, Group<g_Group>, HelpText<"Generate source level debug information">,<br>
-    Flags<[CC1Option]>;<br>
-def gline_tables_only : Flag<"-gline-tables-only">, Group<g_Group>,<br>
-  HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>;<br>
+def gstabs : Joined<"-gstabs">, Group<g_Group>, Flags<[Unsupported]>;<br>
+def gcoff : Joined<"-gcoff">, Group<g_Group>, Flags<[Unsupported]>;<br>
+def gxcoff : Joined<"-gxcoff">, Group<g_Group>, Flags<[Unsupported]>;<br>
+def gvms : Joined<"-gvms">, Group<g_Group>, Flags<[Unsupported]>;<br>
+def gtoggle : Flag<"-gtoggle">, Group<g_flags_Group>, Flags<[Unsupported]>;<br>
+def grecord_gcc_switches : Flag<"-grecord-gcc-switches">, Group<g_flags_Group>;<br>
+def gno_record_gcc_switches : Flag<"-gno-record-gcc-switches">,<br>
+  Group<g_flags_Group>;<br>
+def gstrict_dwarf : Flag<"-gstrict-dwarf">, Group<g_flags_Group>;<br>
+def gno_strict_dwarf : Flag<"-gno-strict-dwarf">, Group<g_flags_Group>;<br>
 def headerpad__max__install__names : Joined<"-headerpad_max_install_names">;<br>
 def help : Flag<"-help">, Flags<[CC1Option]>,<br>
   HelpText<"Display available options">;<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=158906&r1=158905&r2=158906&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=158906&r1=158905&r2=158906&view=diff</a><br>


==============================================================================<br>
--- cfe/trunk/lib/Driver/Tools.cpp (original)<br>
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Jun 21 03:22:39 2012<br>
@@ -1910,21 +1910,19 @@<br>
<br>
   // Use the last option from "-g" group. "-gline-tables-only" is<br>
   // preserved, all other debug options are substituted with "-g".<br>
-  // FIXME: We should eventually do the following:<br>
-  //   1) collapse gdb and dwarf variations to -g (as we do now);<br>
-  //   2) support things like -gtoggle;<br>
-  //   3) ignore flag options like -gstrict-dwarf or -grecord-gcc-switches;<br>
-  //   4) produce a driver error on unsupported formats<br>
-  //      (-gstabs, -gcoff, -gvms etc.)<br>
   Args.ClaimAllArgs(options::OPT_g_Group);<br>
   if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {<br>
     if (A->getOption().matches(options::OPT_gline_tables_only)) {<br>
       CmdArgs.push_back("-gline-tables-only");<br>
-    } else if (!A->getOption().matches(options::OPT_g0)) {<br>
+    } else if (!A->getOption().matches(options::OPT_g0) &&<br>
+               !A->getOption().matches(options::OPT_ggdb0)) {<br>
       CmdArgs.push_back("-g");<br>
     }<br>
   }<br>
<br>
+  // We ignore flags -gstrict-dwarf and -grecord-gcc-switches for now.<br>
+  Args.ClaimAllArgs(options::OPT_g_flags_Group);<br>
+<br>
   Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections);<br>
   Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections);<br>
<br>
<br>
Modified: cfe/trunk/test/Driver/debug-options.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=158906&r1=158905&r2=158906&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=158906&r1=158905&r2=158906&view=diff</a><br>


==============================================================================<br>
--- cfe/trunk/test/Driver/debug-options.c (original)<br>
+++ cfe/trunk/test/Driver/debug-options.c Thu Jun 21 03:22:39 2012<br>
@@ -2,49 +2,43 @@<br>
 // rdar://10383444<br>
<br>
 // RUN: %clang -### -c -g %s 2>&1 | FileCheck -check-prefix=G %s<br>
-// RUN: %clang -### -c -g2 %s 2>&1 | FileCheck -check-prefix=G2 %s<br>
-// RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G3 %s<br>
-// RUN: %clang -### -c -ganything %s 2>&1 | FileCheck -check-prefix=GANY %s<br>
-// RUN: %clang -### -c -ggdb %s 2>&1 | FileCheck -check-prefix=GGDB %s<br>
-// RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=GFOO %s<br>
-// RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=GG0 %s<br>
+// RUN: %clang -### -c -g2 %s 2>&1 | FileCheck -check-prefix=G %s<br>
+// RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G %s<br>
+// RUN: %clang -### -c -ggdb %s 2>&1 | FileCheck -check-prefix=G %s<br>
+// RUN: %clang -### -c -ggdb1 %s 2>&1 | FileCheck -check-prefix=G %s<br>
+// RUN: %clang -### -c -ggdb3 %s 2>&1 | FileCheck -check-prefix=G %s<br>
+// RUN: %clang -### -c -gdwarf-2 %s 2>&1 | FileCheck -check-prefix=G %s<br>
+//<br>
+// RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=G_NO %s<br>
+// RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=G_NO %s<br>
+// RUN: %clang -### -c -ggdb0 %s 2>&1 | FileCheck -check-prefix=G_NO %s<br>
+//<br>
 // RUN: %clang -### -c -gline-tables-only %s 2>&1 \<br>
-// RUN:             | FileCheck -check-prefix=GLTO %s<br>
+// RUN:             | FileCheck -check-prefix=GLTO_ONLY %s<br>
 // RUN: %clang -### -c -gline-tables-only -g %s 2>&1 \<br>
-// RUN:             | FileCheck -check-prefix=GLTO2 %s<br>
+// RUN:             | FileCheck -check-prefix=G_ONLY %s<br>
 // RUN: %clang -### -c -gline-tables-only -g0 %s 2>&1 \<br>
-// RUN:             | FileCheck -check-prefix=GLTO3 %s<br>
+// RUN:             | FileCheck -check-prefix=GLTO_NO %s<br>
+//<br>
+// RUN: %clang -c -grecord-gcc-switches -gno-record-gcc-switches \<br>
+// RUN:           -gstrict-dwarf -gno-strict-dwarf %s 2>&1 \<br>
+// RUN:        | not grep "argument unused during compilation"<br>
 //<br>
 // G: "-cc1"<br>
 // G: "-g"<br>
 //<br>
-// G2: "-cc1"<br>
-// G2: "-g"<br>
-//<br>
-// G3: "-cc1"<br>
-// G3: "-g"<br>
-//<br>
-// GANY: "-cc1"<br>
-// GANY-NOT: "-g"<br>
-//<br>
-// GGDB: "-cc1"<br>
-// GGDB: "-g"<br>
-//<br>
-// GFOO: "-cc1"<br>
-// GFOO-NOT: "-g"<br>
-//<br>
-// GG0: "-cc1"<br>
-// GG0-NOT: "-g"<br>
-//<br>
-// GLTO: "-cc1"<br>
-// GLTO-NOT: "-g"<br>
-// GLTO: "-gline-tables-only"<br>
-// GLTO-NOT: "-g"<br>
+// G_NO: "-cc1"<br>
+// G_NO-NOT: "-g"<br>
 //<br>
-// GLTO2: "-cc1"<br>
-// GLTO2-NOT: "-gline-tables-only"<br>
-// GLTO2: "-g"<br>
-// GLTO2-NOT: "-gline-tables-only"<br>
+// GLTO_ONLY: "-cc1"<br>
+// GLTO_ONLY-NOT: "-g"<br>
+// GLTO_ONLY: "-gline-tables-only"<br>
+// GLTO_ONLY-NOT: "-g"<br>
+//<br>
+// G_ONLY: "-cc1"<br>
+// G_ONLY-NOT: "-gline-tables-only"<br>
+// G_ONLY: "-g"<br>
+// G_ONLY-NOT: "-gline-tables-only"<br>
 //<br>
-// GLTO3: "-cc1"<br>
-// GLTO3-NOT: "-gline-tables-only"<br>
+// GLTO_NO: "-cc1"<br>
+// GLTO_NO-NOT: "-gline-tables-only"<br>
<br>
Added: cfe/trunk/test/Driver/debug-unsupported.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-unsupported.c?rev=158906&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-unsupported.c?rev=158906&view=auto</a><br>


==============================================================================<br>
--- cfe/trunk/test/Driver/debug-unsupported.c (added)<br>
+++ cfe/trunk/test/Driver/debug-unsupported.c Thu Jun 21 03:22:39 2012<br>
@@ -0,0 +1,13 @@<br>
+// RUN: %clang -c -gstabs %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gstabs+ %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gcoff %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gxcoff %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gxcoff+ %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gvms %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gstabs1 %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gcoff2 %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gxcoff3 %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gvms0 %s 2>&1 | FileCheck %s<br>
+// RUN: %clang -c -gtoggle %s 2>&1 | FileCheck %s<br>
+//<br>
+// CHECK: clang: error: unsupported option<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div></div></div><br></font></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><br>
</font></div>