diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-07-09 21:49:16 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-07-09 21:49:16 +0000 |
commit | 58fab355e2606a2c376b01b2a4b949897611ed0f (patch) | |
tree | f55989a3d4582d5f74e446d027b2ca37655fbf18 /clang/lib/Driver/Tools.cpp | |
parent | 606126e848b256fb9d0a91371b15e5ec024a63f8 (diff) | |
download | llvm-58fab355e2606a2c376b01b2a4b949897611ed0f.zip llvm-58fab355e2606a2c376b01b2a4b949897611ed0f.tar.gz llvm-58fab355e2606a2c376b01b2a4b949897611ed0f.tar.bz2 |
[clang-cl] Add support for /Zd
MASM (ML.exe and ML64.exe) and older versions of MSVC (CL.exe) support a
flag called /Zd which is more-or-less -gline-tables-only.
It seems nicer to support this flag instead of exposing
-gline-tables-only.
llvm-svn: 274991
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 71440c4..d3844dd 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -6269,12 +6269,18 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType, CmdArgs.push_back(Args.MakeArgString(Twine(LangOptions::SSPStrong))); } - // Emit CodeView if -Z7 is present. - *EmitCodeView = Args.hasArg(options::OPT__SLASH_Z7); - if (*EmitCodeView) - *DebugInfoKind = codegenoptions::LimitedDebugInfo; - if (*EmitCodeView) + // Emit CodeView if -Z7 or -Zd are present. + if (Arg *DebugInfoArg = + Args.getLastArg(options::OPT__SLASH_Z7, options::OPT__SLASH_Zd)) { + *EmitCodeView = true; + if (DebugInfoArg->getOption().matches(options::OPT__SLASH_Z7)) + *DebugInfoKind = codegenoptions::LimitedDebugInfo; + else + *DebugInfoKind = codegenoptions::DebugLineTablesOnly; CmdArgs.push_back("-gcodeview"); + } else { + *EmitCodeView = false; + } const Driver &D = getToolChain().getDriver(); EHFlags EH = parseClangCLEHFlags(D, Args); @@ -9964,7 +9970,8 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-nologo"); - if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7)) + if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7, + options::OPT__SLASH_Zd)) CmdArgs.push_back("-debug"); bool DLL = Args.hasArg(options::OPT__SLASH_LD, options::OPT__SLASH_LDd, |