Author: zturner Date: Mon Feb 26 11:25:39 2018 New Revision: 326113 URL: http://llvm.org/viewvc/llvm-project?rev=326113&view=rev Log: Emit proper CodeView when -gcodeview is passed without the cl driver.
Windows debuggers don't work properly when column info is emitted with lines. We handled this by checking if the driver mode was cl, but it's possible to cause the gcc driver to emit codeview as well, and in that path we were emitting column info with codeview. Differential Revision: https://reviews.llvm.org/D43700 Added: cfe/trunk/test/Driver/codeview-column-info.c Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=326113&r1=326112&r2=326113&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Feb 26 11:25:39 2018 @@ -2968,7 +2968,7 @@ static void RenderDebugOptions(const Too // 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, 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, Added: cfe/trunk/test/Driver/codeview-column-info.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/codeview-column-info.c?rev=326113&view=auto ============================================================================== --- cfe/trunk/test/Driver/codeview-column-info.c (added) +++ cfe/trunk/test/Driver/codeview-column-info.c Mon Feb 26 11:25:39 2018 @@ -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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits