diff options
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 4 | ||||
-rw-r--r-- | clang/test/Driver/codeview-column-info.c | 13 | ||||
-rw-r--r-- | compiler-rt/test/lit.common.cfg | 4 |
3 files changed, 20 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index a2248ddaa90..6ad38bc0e40 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -2968,7 +2968,7 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D, // Forward -gcodeview. EmitCodeView might have been set by CL-compatibility // argument parsing. - if (Args.hasArg(options::OPT_gcodeview) || EmitCodeView) { + if (EmitCodeView) { // DWARFVersion remains at 0 if no explicit choice was made. CmdArgs.push_back("-gcodeview"); } else if (DWARFVersion == 0 && @@ -3567,6 +3567,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, types::ID InputType = Input.getType(); if (D.IsCLMode()) AddClangCLArgs(Args, InputType, CmdArgs, &DebugInfoKind, &EmitCodeView); + else + EmitCodeView = Args.hasArg(options::OPT_gcodeview); const Arg *SplitDWARFArg = nullptr; RenderDebugOptions(getToolChain(), D, RawTriple, Args, EmitCodeView, diff --git a/clang/test/Driver/codeview-column-info.c b/clang/test/Driver/codeview-column-info.c new file mode 100644 index 00000000000..9f2f016a5f8 --- /dev/null +++ b/clang/test/Driver/codeview-column-info.c @@ -0,0 +1,13 @@ +// Check that -dwarf-column-info does not get added to the cc1 line: +// 1) When -gcodeview is present via the clang or clang++ driver +// 2) When /Z7 is present via the cl driver. + +// RUN: %clang -### -c -g -gcodeview %s 2> %t1 +// RUN: FileCheck < %t1 %s +// RUN: %clangxx -### -c -g -gcodeview %s 2> %t2 +// RUN: FileCheck < %t2 %s +// RUN: %clang_cl -### /c /Z7 %s 2> %t2 +// RUN: FileCheck < %t2 %s + +// CHECK: "-cc1" +// CHECK-NOT: "-dwarf-column-info" diff --git a/compiler-rt/test/lit.common.cfg b/compiler-rt/test/lit.common.cfg index fda68e8f9c0..20280ae6e59 100644 --- a/compiler-rt/test/lit.common.cfg +++ b/compiler-rt/test/lit.common.cfg @@ -37,7 +37,11 @@ if compiler_id == "Clang": # reports and stack traces even with minimal debug info. config.debug_info_flags = ["-gline-tables-only"] if platform.system() == 'Windows': + # On Windows, use CodeView with column info instead of DWARF. Both VS and + # windbg do not behave well when column info is enabled, but users have + # requested it because it makes ASan reports more precise. config.debug_info_flags.append("-gcodeview") + config.debug_info_flags.append("-gcolumn-info") elif compiler_id == 'GNU': config.cxx_mode_flags = ["-x c++"] config.debug_info_flags = ["-g"] |