From: Douglas Katzman Date: Mon, 14 Sep 2015 20:31:28 +0000 (+0000) Subject: Driver should forward at most one gdwarf-N flag to cc1as. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=39cd18c57a6cf825e675b9b3e2e7256083563083;p=clang Driver should forward at most one gdwarf-N flag to cc1as. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247611 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 0adc05c946..1b79ed730f 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3769,14 +3769,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Triple.getOS() == llvm::Triple::Solaris) CmdArgs.push_back("-gdwarf-2"); SplitDwarfArg = nullptr; - } else if (A->getOption().matches(options::OPT_gdwarf_2)) - CmdArgs.push_back("-gdwarf-2"); - else if (A->getOption().matches(options::OPT_gdwarf_3)) - CmdArgs.push_back("-gdwarf-3"); - else if (A->getOption().matches(options::OPT_gdwarf_4)) - CmdArgs.push_back("-gdwarf-4"); - else if (!A->getOption().matches(options::OPT_g0) && - !A->getOption().matches(options::OPT_ggdb0)) { + } else if (A->getOption().matches(options::OPT_gdwarf_2) || + 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)) { // Default is dwarf-2 for Darwin, OpenBSD, FreeBSD and Solaris. const llvm::Triple &Triple = getToolChain().getTriple(); if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::OpenBSD || @@ -5550,12 +5548,9 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, if (!A->getOption().matches(options::OPT_g0)) CmdArgs.push_back("-g"); - if (Args.hasArg(options::OPT_gdwarf_2)) - CmdArgs.push_back("-gdwarf-2"); - if (Args.hasArg(options::OPT_gdwarf_3)) - CmdArgs.push_back("-gdwarf-3"); - if (Args.hasArg(options::OPT_gdwarf_4)) - CmdArgs.push_back("-gdwarf-4"); + if (Arg *A = Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3, + options::OPT_gdwarf_4)) + A->render(Args, CmdArgs); // Add the -fdebug-compilation-dir flag if needed. addDebugCompDirArg(Args, CmdArgs); diff --git a/test/Driver/integrated-as.s b/test/Driver/integrated-as.s index a2cd574efe..e274a45cd0 100644 --- a/test/Driver/integrated-as.s +++ b/test/Driver/integrated-as.s @@ -26,8 +26,9 @@ // XA_INCLUDE2: cc1as // XA_INCLUDE2: "-Ifoo_dir" -// RUN: %clang -### -c -integrated-as %s -gdwarf-2 2>&1 | FileCheck --check-prefix=DWARF2 %s +// RUN: %clang -### -c -integrated-as %s -gdwarf-4 -gdwarf-2 2>&1 | FileCheck --check-prefix=DWARF2 %s // DWARF2: "-g" "-gdwarf-2" +// DWARF2-NOT: "-gdwarf-4" // RUN: %clang -### -c -integrated-as %s -gdwarf-3 2>&1 | FileCheck --check-prefix=DWARF3 %s // DWARF3: "-g" "-gdwarf-3"