r279765 - Omit column info for CodeView by default

Adrian McCarthy via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 29 14:17:54 PDT 2016


Sorry, no, I don't have plans to implement column ranges at this time.

On Mon, Aug 29, 2016 at 2:10 PM, Adrian Prantl <aprantl at apple.com> wrote:

>
> > On Aug 25, 2016, at 11:24 AM, Adrian McCarthy via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
> >
> > Author: amccarth
> > Date: Thu Aug 25 13:24:35 2016
> > New Revision: 279765
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=279765&view=rev
> > Log:
> > Omit column info for CodeView by default
> >
> > Clang tracks only start columns, not start-end ranges. CodeView allows
> for that, but the VS debugger doesn't handle anything less than a complete
> range well--it either highlights the wrong part of a statement or truncates
> source lines in the assembly view. It's better to have no column
> information at all.
>
> Do you have any plans on implementing this? I'd be very interested in
> having full start-end ranges (perhaps encoded as start line/column+length)
> available in DWARF, too.
>
> -- adrian
>
> >
> > So by default, we'll omit the column information for CodeView targeting
> Windows.
> >
> > Since the column info is still useful for sanitizers, I've promoted
> -gcolumn-info (and -gno-column-info) to a CoreOption and added a couple
> tests to make sure that works for clang-cl.
> >
> > Differential Revision: https://reviews.llvm.org/D23720
> >
> > Modified:
> >    cfe/trunk/include/clang/Driver/Options.td
> >    cfe/trunk/lib/Driver/Tools.cpp
> >    cfe/trunk/test/Driver/cl-options.c
> >
> > Modified: cfe/trunk/include/clang/Driver/Options.td
> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/
> clang/Driver/Options.td?rev=279765&r1=279764&r2=279765&view=diff
> > ============================================================
> ==================
> > --- cfe/trunk/include/clang/Driver/Options.td (original)
> > +++ cfe/trunk/include/clang/Driver/Options.td Thu Aug 25 13:24:35 2016
> > @@ -1305,8 +1305,8 @@ def gno_record_gcc_switches : Flag<["-"]
> >   Group<g_flags_Group>;
> > def gstrict_dwarf : Flag<["-"], "gstrict-dwarf">, Group<g_flags_Group>;
> > def gno_strict_dwarf : Flag<["-"], "gno-strict-dwarf">,
> Group<g_flags_Group>;
> > -def gcolumn_info : Flag<["-"], "gcolumn-info">, Group<g_flags_Group>;
> > -def gno_column_info : Flag<["-"], "gno-column-info">,
> Group<g_flags_Group>;
> > +def gcolumn_info : Flag<["-"], "gcolumn-info">, Group<g_flags_Group>,
> Flags<[CoreOption]>;
> > +def gno_column_info : Flag<["-"], "gno-column-info">,
> Group<g_flags_Group>, Flags<[CoreOption]>;
> > def gsplit_dwarf : Flag<["-"], "gsplit-dwarf">, Group<g_flags_Group>;
> > def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group<g_flags_Group>;
> > def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>;
> >
> > Modified: cfe/trunk/lib/Driver/Tools.cpp
> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
> Tools.cpp?rev=279765&r1=279764&r2=279765&view=diff
> > ============================================================
> ==================
> > --- cfe/trunk/lib/Driver/Tools.cpp (original)
> > +++ cfe/trunk/lib/Driver/Tools.cpp Thu Aug 25 13:24:35 2016
> > @@ -2574,7 +2574,7 @@ static void getTargetFeatures(const Tool
> >   case llvm::Triple::wasm32:
> >   case llvm::Triple::wasm64:
> >     getWebAssemblyTargetFeatures(Args, Features);
> > -    break;
> > +    break;
> >   case llvm::Triple::sparc:
> >   case llvm::Triple::sparcel:
> >   case llvm::Triple::sparcv9:
> > @@ -4656,9 +4656,13 @@ void Clang::ConstructJob(Compilation &C,
> >   // We ignore flags -gstrict-dwarf and -grecord-gcc-switches for now.
> >   Args.ClaimAllArgs(options::OPT_g_flags_Group);
> >
> > -  // PS4 defaults to no column info
> > +  // Column info is included by default for everything except PS4 and
> CodeView.
> > +  // Clang doesn't track end columns, just starting columns, which, in
> theory,
> > +  // is fine for CodeView (and PDB).  In practice, however, the
> Microsoft
> > +  // debuggers don't handle missing end columns well, so it's better
> not to
> > +  // include any column info.
> >   if (Args.hasFlag(options::OPT_gcolumn_info,
> options::OPT_gno_column_info,
> > -                   /*Default=*/ !IsPS4CPU))
> > +                   /*Default=*/ !IsPS4CPU && !(IsWindowsMSVC &&
> EmitCodeView)))
> >     CmdArgs.push_back("-dwarf-column-info");
> >
> >   // FIXME: Move backend command line options to the module.
> > @@ -6712,7 +6716,7 @@ void ClangAs::ConstructJob(Compilation &
> >   case llvm::Triple::mips64el:
> >     AddMIPSTargetArgs(Args, CmdArgs);
> >     break;
> > -
> > +
> >   case llvm::Triple::x86:
> >   case llvm::Triple::x86_64:
> >     AddX86TargetArgs(Args, CmdArgs);
> >
> > Modified: cfe/trunk/test/Driver/cl-options.c
> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
> cl-options.c?rev=279765&r1=279764&r2=279765&view=diff
> > ============================================================
> ==================
> > --- cfe/trunk/test/Driver/cl-options.c (original)
> > +++ cfe/trunk/test/Driver/cl-options.c Thu Aug 25 13:24:35 2016
> > @@ -50,6 +50,15 @@
> > // fpstrict-NOT: -menable-unsafe-fp-math
> > // fpstrict-NOT: -ffast-math
> >
> > +// RUN: %clang_cl /Z7 -gcolumn-info -### -- %s 2>&1 | FileCheck
> -check-prefix=gcolumn %s
> > +// gcolumn: -dwarf-column-info
> > +
> > +// RUN: %clang_cl /Z7 -gno-column-info -### -- %s 2>&1 | FileCheck
> -check-prefix=gnocolumn %s
> > +// gnocolumn-NOT: -dwarf-column-info
> > +
> > +// RUN: %clang_cl /Z7 -### -- %s 2>&1 | FileCheck
> -check-prefix=gdefcolumn %s
> > +// gdefcolumn-NOT: -dwarf-column-info
> > +
> > // RUN: %clang_cl /GA -### -- %s 2>&1 | FileCheck -check-prefix=GA %s
> > // GA: -ftls-model=local-exec
> >
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160829/9bd9ec03/attachment-0001.html>


More information about the cfe-commits mailing list