From e9134a5e3ff4eb6fcc2d70beb86496562595aba2 Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Wed, 30 Sep 2015 15:55:59 +0000 Subject: [PATCH] Alias "-ggdbN" to "-gN" options, fixing some incompatibilities. * assembling from a .s file mistook -ggdb0 for -g * -ggdb1 is supposed to mean basically -g1, not -gN for N>1 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248912 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Options.td | 12 +++++++----- lib/Driver/Tools.cpp | 6 ++---- test/Driver/debug-options-as.c | 13 +++++++++---- test/Driver/debug-options.c | 4 ++-- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 018855a974..e4b461fe9a 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -1109,14 +1109,16 @@ def gline_tables_only : Flag<["-"], "gline-tables-only">, Group, HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>; def gmlt : Flag<["-"], "gmlt">, Alias; def g0 : Flag<["-"], "g0">, Group; -def g1 : Flag<["-"], "g1">, Group; +def g1 : Flag<["-"], "g1">, Group, Alias; def g2 : Flag<["-"], "g2">, Group; def g3 : Flag<["-"], "g3">, Group; def ggdb : Flag<["-"], "ggdb">, Group; -def ggdb0 : Flag<["-"], "ggdb0">, Group; -def ggdb1 : Flag<["-"], "ggdb1">, Group; -def ggdb2 : Flag<["-"], "ggdb2">, Group; -def ggdb3 : Flag<["-"], "ggdb3">, Group; +def ggdb0 : Flag<["-"], "ggdb0">, Alias; +// Redirect ggdb1 to , not , +// because aliases of aliases aren't allowed. +def ggdb1 : Flag<["-"], "ggdb1">, Alias; +def ggdb2 : Flag<["-"], "ggdb2">, Alias; +def ggdb3 : Flag<["-"], "ggdb3">, Alias; def gdwarf_2 : Flag<["-"], "gdwarf-2">, Group, HelpText<"Generate source-level debug information with dwarf version 2">, Flags<[CC1Option,CC1AsOption]>; def gdwarf_3 : Flag<["-"], "gdwarf-3">, Group, diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 62f86e15e6..47673854ad 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3802,8 +3802,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.ClaimAllArgs(options::OPT_g_Group); Arg *SplitDwarfArg = Args.getLastArg(options::OPT_gsplit_dwarf); if (Arg *A = Args.getLastArg(options::OPT_g_Group)) { - if ((A->getOption().matches(options::OPT_gline_tables_only) || - A->getOption().matches(options::OPT_g1)) && + if (A->getOption().matches(options::OPT_gline_tables_only) && (!SplitDwarfArg || A->getIndex() > SplitDwarfArg->getIndex())) { // FIXME: we should support specifying dwarf version with // -gline-tables-only. @@ -3819,8 +3818,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, A->getOption().matches(options::OPT_gdwarf_3) || A->getOption().matches(options::OPT_gdwarf_4)) { A->render(Args, CmdArgs); - } else if (!A->getOption().matches(options::OPT_g0) && - !A->getOption().matches(options::OPT_ggdb0)) { + } else if (!A->getOption().matches(options::OPT_g0)) { // Default is dwarf-2 for Darwin, OpenBSD, FreeBSD and Solaris. const llvm::Triple &Triple = getToolChain().getTriple(); if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::OpenBSD || diff --git a/test/Driver/debug-options-as.c b/test/Driver/debug-options-as.c index 74a544c1c4..92b865e8ed 100644 --- a/test/Driver/debug-options-as.c +++ b/test/Driver/debug-options-as.c @@ -7,10 +7,16 @@ // SAVE: "-cc1as" // SAVE-NOT: "-g" +// Make sure that '-ggdb0' is not accidentally mistaken for '-g' +// RUN: %clang -### -ggdb0 -c -integrated-as -x assembler %s 2>&1 \ +// RUN: | FileCheck -check-prefix=GGDB0 %s +// +// GGDB0: "-cc1as" +// GGDB0-NOT: "-g" + // Check to make sure clang with -g on a .s file gets passed. // rdar://9275556 -// RUN: touch %t.s -// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \ +// RUN: %clang -### -c -integrated-as -g -x assembler %s 2>&1 \ // RUN: | FileCheck %s // // CHECK: "-cc1as" @@ -18,8 +24,7 @@ // Check to make sure clang with -g on a .s file gets passed -dwarf-debug-producer. // rdar://12955296 -// RUN: touch %t.s -// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \ +// RUN: %clang -### -c -integrated-as -g -x assembler %s 2>&1 \ // RUN: | FileCheck -check-prefix=P %s // // P: "-cc1as" diff --git a/test/Driver/debug-options.c b/test/Driver/debug-options.c index 830305ad45..5f1c5df8e1 100644 --- a/test/Driver/debug-options.c +++ b/test/Driver/debug-options.c @@ -10,7 +10,7 @@ // RUN: %clang -### -c -ggdb %s -target x86_64-linux-gnu 2>&1 \ // RUN: | FileCheck -check-prefix=G %s // RUN: %clang -### -c -ggdb1 %s -target x86_64-linux-gnu 2>&1 \ -// RUN: | FileCheck -check-prefix=G %s +// RUN: | FileCheck -check-prefix=GLTO_ONLY %s // RUN: %clang -### -c -ggdb3 %s -target x86_64-linux-gnu 2>&1 \ // RUN: | FileCheck -check-prefix=G %s @@ -23,7 +23,7 @@ // RUN: %clang -### -c -ggdb %s -target x86_64-apple-darwin 2>&1 \ // RUN: | FileCheck -check-prefix=G_DARWIN %s // RUN: %clang -### -c -ggdb1 %s -target x86_64-apple-darwin 2>&1 \ -// RUN: | FileCheck -check-prefix=G_DARWIN %s +// RUN: | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s // RUN: %clang -### -c -ggdb3 %s -target x86_64-apple-darwin 2>&1 \ // RUN: | FileCheck -check-prefix=G_DARWIN %s -- 2.40.0