aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorDouglas Katzman <dougk@google.com>2015-09-14 20:31:28 +0000
committerDouglas Katzman <dougk@google.com>2015-09-14 20:31:28 +0000
commit553927a78adaeb5d1dfd6dbd24fa7239fd463412 (patch)
treea167af03bbedafa2721992098bb62e25834ec18e /clang/lib/Driver/Tools.cpp
parent6614d8d2308f2571a79592cdd4b4611a1e072898 (diff)
downloadllvm-553927a78adaeb5d1dfd6dbd24fa7239fd463412.zip
llvm-553927a78adaeb5d1dfd6dbd24fa7239fd463412.tar.gz
llvm-553927a78adaeb5d1dfd6dbd24fa7239fd463412.tar.bz2
Driver should forward at most one gdwarf-N flag to cc1as.
llvm-svn: 247611
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 0adc05c..1b79ed7 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/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);