On Thu, Jun 21, 2012 at 1:22 AM, Alexey Samsonov <[email protected]>wrote:
> Author: samsonov > Date: Thu Jun 21 03:22:39 2012 > New Revision: 158906 > > URL: http://llvm.org/viewvc/llvm-project?rev=158906&view=rev > Log: > Improve support for -g options accepted by Clang: > 1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to > simple -g (except -g0/-ggdb0). > 2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) > and options (-gtoggle). > 3. Recognize and ignore flags -g[no-]strict-dwarf, > -g[no-]record-gcc-switches. > Largely unrelated, but would you be up for adding a release note about -gline-tables-only? > > Added: > cfe/trunk/test/Driver/debug-unsupported.c > Modified: > cfe/trunk/include/clang/Driver/Options.td > cfe/trunk/lib/Driver/Tools.cpp > cfe/trunk/test/Driver/debug-options.c > > Modified: cfe/trunk/include/clang/Driver/Options.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=158906&r1=158905&r2=158906&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/Driver/Options.td (original) > +++ cfe/trunk/include/clang/Driver/Options.td Thu Jun 21 03:22:39 2012 > @@ -33,6 +33,7 @@ > def f_Group : OptionGroup<"<f group>">, > Group<CompileOnly_Group>; > def f_clang_Group : OptionGroup<"<f (clang-only) group>">, > Group<CompileOnly_Group>; > def g_Group : OptionGroup<"<g group>">; > +def g_flags_Group : OptionGroup<"<g flags group>">; > def i_Group : OptionGroup<"<i group>">, > Group<CompileOnly_Group>; > def clang_i_Group : OptionGroup<"<clang i group>">, > Group<i_Group>; > def m_Group : OptionGroup<"<m group>">, > Group<CompileOnly_Group>; > @@ -671,21 +672,34 @@ > def fdata_sections : Flag <"-fdata-sections">, Group<f_Group>, > Flags<[CC1Option]>, > HelpText<"Place each data in its own section (ELF Only)">; > def f : Joined<"-f">, Group<f_Group>; > +def g_Flag : Flag<"-g">, Group<g_Group>, > + HelpText<"Generate source level debug information">, Flags<[CC1Option]>; > +def gline_tables_only : Flag<"-gline-tables-only">, Group<g_Group>, > + HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>; > def g0 : Flag<"-g0">, Group<g_Group>; > +def g1 : Flag<"-g1">, Group<g_Group>; > def g2 : Flag<"-g2">, Group<g_Group>; > def g3 : Flag<"-g3">, Group<g_Group>; > -def gdwarf2 : Flag<"-gdwarf-2">, Group<g_Group>; > -def gfull : Flag<"-gfull">, Group<g_Group>; > def ggdb : Flag<"-ggdb">, Group<g_Group>; > -def gstabs : Flag<"-gstabs">, Group<g_Group>; > -def gstabsplus : Flag<"-gstabs+">, Group<g_Group>; > -def gstabs1 : Flag<"-gstabs1">, Group<g_Group>; > -def gstabs2 : Flag<"-gstabs2">, Group<g_Group>; > +def ggdb0 : Flag<"-ggdb0">, Group<g_Group>; > +def ggdb1 : Flag<"-ggdb1">, Group<g_Group>; > +def ggdb2 : Flag<"-ggdb2">, Group<g_Group>; > +def ggdb3 : Flag<"-ggdb3">, Group<g_Group>; > +def gdwarf_2 : Flag<"-gdwarf-2">, Group<g_Group>; > +def gdwarf_3 : Flag<"-gdwarf-3">, Group<g_Group>; > +def gdwarf_4 : Flag<"-gdwarf-4">, Group<g_Group>; > +def gfull : Flag<"-gfull">, Group<g_Group>; > def gused : Flag<"-gused">, Group<g_Group>; > -def g_Flag : Flag<"-g">, Group<g_Group>, HelpText<"Generate source level > debug information">, > - Flags<[CC1Option]>; > -def gline_tables_only : Flag<"-gline-tables-only">, Group<g_Group>, > - HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>; > +def gstabs : Joined<"-gstabs">, Group<g_Group>, Flags<[Unsupported]>; > +def gcoff : Joined<"-gcoff">, Group<g_Group>, Flags<[Unsupported]>; > +def gxcoff : Joined<"-gxcoff">, Group<g_Group>, Flags<[Unsupported]>; > +def gvms : Joined<"-gvms">, Group<g_Group>, Flags<[Unsupported]>; > +def gtoggle : Flag<"-gtoggle">, Group<g_flags_Group>, > Flags<[Unsupported]>; > +def grecord_gcc_switches : Flag<"-grecord-gcc-switches">, > Group<g_flags_Group>; > +def gno_record_gcc_switches : Flag<"-gno-record-gcc-switches">, > + Group<g_flags_Group>; > +def gstrict_dwarf : Flag<"-gstrict-dwarf">, Group<g_flags_Group>; > +def gno_strict_dwarf : Flag<"-gno-strict-dwarf">, Group<g_flags_Group>; > def headerpad__max__install__names : > Joined<"-headerpad_max_install_names">; > def help : Flag<"-help">, Flags<[CC1Option]>, > HelpText<"Display available options">; > > Modified: cfe/trunk/lib/Driver/Tools.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=158906&r1=158905&r2=158906&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/Tools.cpp (original) > +++ cfe/trunk/lib/Driver/Tools.cpp Thu Jun 21 03:22:39 2012 > @@ -1910,21 +1910,19 @@ > > // Use the last option from "-g" group. "-gline-tables-only" is > // preserved, all other debug options are substituted with "-g". > - // FIXME: We should eventually do the following: > - // 1) collapse gdb and dwarf variations to -g (as we do now); > - // 2) support things like -gtoggle; > - // 3) ignore flag options like -gstrict-dwarf or > -grecord-gcc-switches; > - // 4) produce a driver error on unsupported formats > - // (-gstabs, -gcoff, -gvms etc.) > Args.ClaimAllArgs(options::OPT_g_Group); > if (Arg *A = Args.getLastArg(options::OPT_g_Group)) { > if (A->getOption().matches(options::OPT_gline_tables_only)) { > CmdArgs.push_back("-gline-tables-only"); > - } else if (!A->getOption().matches(options::OPT_g0)) { > + } else if (!A->getOption().matches(options::OPT_g0) && > + !A->getOption().matches(options::OPT_ggdb0)) { > CmdArgs.push_back("-g"); > } > } > > + // We ignore flags -gstrict-dwarf and -grecord-gcc-switches for now. > + Args.ClaimAllArgs(options::OPT_g_flags_Group); > + > Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections); > Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections); > > > Modified: cfe/trunk/test/Driver/debug-options.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=158906&r1=158905&r2=158906&view=diff > > ============================================================================== > --- cfe/trunk/test/Driver/debug-options.c (original) > +++ cfe/trunk/test/Driver/debug-options.c Thu Jun 21 03:22:39 2012 > @@ -2,49 +2,43 @@ > // rdar://10383444 > > // RUN: %clang -### -c -g %s 2>&1 | FileCheck -check-prefix=G %s > -// RUN: %clang -### -c -g2 %s 2>&1 | FileCheck -check-prefix=G2 %s > -// RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G3 %s > -// RUN: %clang -### -c -ganything %s 2>&1 | FileCheck -check-prefix=GANY > %s > -// RUN: %clang -### -c -ggdb %s 2>&1 | FileCheck -check-prefix=GGDB %s > -// RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=GFOO %s > -// RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=GG0 %s > +// RUN: %clang -### -c -g2 %s 2>&1 | FileCheck -check-prefix=G %s > +// RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G %s > +// RUN: %clang -### -c -ggdb %s 2>&1 | FileCheck -check-prefix=G %s > +// RUN: %clang -### -c -ggdb1 %s 2>&1 | FileCheck -check-prefix=G %s > +// RUN: %clang -### -c -ggdb3 %s 2>&1 | FileCheck -check-prefix=G %s > +// RUN: %clang -### -c -gdwarf-2 %s 2>&1 | FileCheck -check-prefix=G %s > +// > +// RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=G_NO %s > +// RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=G_NO %s > +// RUN: %clang -### -c -ggdb0 %s 2>&1 | FileCheck -check-prefix=G_NO %s > +// > // RUN: %clang -### -c -gline-tables-only %s 2>&1 \ > -// RUN: | FileCheck -check-prefix=GLTO %s > +// RUN: | FileCheck -check-prefix=GLTO_ONLY %s > // RUN: %clang -### -c -gline-tables-only -g %s 2>&1 \ > -// RUN: | FileCheck -check-prefix=GLTO2 %s > +// RUN: | FileCheck -check-prefix=G_ONLY %s > // RUN: %clang -### -c -gline-tables-only -g0 %s 2>&1 \ > -// RUN: | FileCheck -check-prefix=GLTO3 %s > +// RUN: | FileCheck -check-prefix=GLTO_NO %s > +// > +// RUN: %clang -c -grecord-gcc-switches -gno-record-gcc-switches \ > +// RUN: -gstrict-dwarf -gno-strict-dwarf %s 2>&1 \ > +// RUN: | not grep "argument unused during compilation" > // > // G: "-cc1" > // G: "-g" > // > -// G2: "-cc1" > -// G2: "-g" > -// > -// G3: "-cc1" > -// G3: "-g" > -// > -// GANY: "-cc1" > -// GANY-NOT: "-g" > -// > -// GGDB: "-cc1" > -// GGDB: "-g" > -// > -// GFOO: "-cc1" > -// GFOO-NOT: "-g" > -// > -// GG0: "-cc1" > -// GG0-NOT: "-g" > -// > -// GLTO: "-cc1" > -// GLTO-NOT: "-g" > -// GLTO: "-gline-tables-only" > -// GLTO-NOT: "-g" > +// G_NO: "-cc1" > +// G_NO-NOT: "-g" > // > -// GLTO2: "-cc1" > -// GLTO2-NOT: "-gline-tables-only" > -// GLTO2: "-g" > -// GLTO2-NOT: "-gline-tables-only" > +// GLTO_ONLY: "-cc1" > +// GLTO_ONLY-NOT: "-g" > +// GLTO_ONLY: "-gline-tables-only" > +// GLTO_ONLY-NOT: "-g" > +// > +// G_ONLY: "-cc1" > +// G_ONLY-NOT: "-gline-tables-only" > +// G_ONLY: "-g" > +// G_ONLY-NOT: "-gline-tables-only" > // > -// GLTO3: "-cc1" > -// GLTO3-NOT: "-gline-tables-only" > +// GLTO_NO: "-cc1" > +// GLTO_NO-NOT: "-gline-tables-only" > > Added: cfe/trunk/test/Driver/debug-unsupported.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-unsupported.c?rev=158906&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/debug-unsupported.c (added) > +++ cfe/trunk/test/Driver/debug-unsupported.c Thu Jun 21 03:22:39 2012 > @@ -0,0 +1,13 @@ > +// RUN: %clang -c -gstabs %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gstabs+ %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gcoff %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gxcoff %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gxcoff+ %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gvms %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gstabs1 %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gcoff2 %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gxcoff3 %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gvms0 %s 2>&1 | FileCheck %s > +// RUN: %clang -c -gtoggle %s 2>&1 | FileCheck %s > +// > +// CHECK: clang: error: unsupported option > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
