labath added a comment.

In D67994#1695172 <https://reviews.llvm.org/D67994#1695172>, @shafik wrote:

> In D67994#1692645 <https://reviews.llvm.org/D67994#1692645>, @labath wrote:
>
> > Maybe this is my fault since I'm the one who introduced the first bunch of 
> > arguments here IIRC, but anyway, I have a feeling all of these dumping 
> > options are getting out of hand. Looking at the argument list, you'd expect 
> > that -dump-ast, and -dump-clang-ast do something completely different, but 
> > they actually print the exact same AST, only one allows you to print a 
> > subset of it, while the other one doesn't.
> >
> > Given that the ast dumping is currently incompatible with all/most of the 
> > other dumping options anyway, maybe we should turn over a clean slate, and 
> > implement a new subcommand specifically dedicated to dumping clang ast (as 
> > opposed to the internal lldb representations of types/functions/..., which 
> > is what the "symbols" subcommand started out as, and which is what most of 
> > its options are dedicated to).
> >
> > OR, and this would-be super cool, if it was actually possible, we could try 
> > to make ast-dumping compatible with the existing searching options.  
> > Currently, if you type `lldb-test symbols -find=type -name=foo` it will 
> > search for types named "foo", and print some summary of the lldb object 
> > representing that type. What if we made it so that adding `-dump-ast` to 
> > that command caused the tool to dump the *AST* of the types it has found 
> > (e.g., in addition to the previous summary)? I think that would make the 
> > behavior of the tool most natural to a new user, but I am not sure whether 
> > that would actually fit in with your goals here...
>
>
> The output is actually quite different for example given:
>
>   struct A {
>     struct {
>         int x;
>     };
>   } a;
>
>
> the output of `lldb-test symbols -dump-ast  anon.o` is:
>
>   Module: anon.o
>   struct A;
>
>
> while the output of `lldb-test symbols -dump-clang-ast  anon.o` is:
>
>   Module: anon.o
>   A
>   CXXRecordDecl 0x7ff3698262c8 <<invalid sloc>> <invalid sloc> struct A 
> definition
>   |-DefinitionData pass_in_registers aggregate standard_layout 
> trivially_copyable pod trivial literal
>   ...
>
>
> Given they are both working with the Symbol File I believe they both belong 
> under  the `symbol` command. I feel like `-dump-ast` is a little misleading 
> but `-dump-clang-ast` feels good.


You're right about. I'm sorry, I should have checked what -dump-ast does. It 
definitely is confusing that it does something completely different than the 
"dump ast" lldb command.

But what about the second part of my comment? I think it would still be nice if 
the `lldb-test symbols` options could be somehow factored into two groups:

- a group which selects *what* to dump: this would be `-find`, `-name`, etc.
- a group which selects *how* to dump it: -dump-clang-ast, -dump-ast :/, the 
default mode

would it be somehow possible to hook in this logic into the `findTypes` 
function in lldb-test, so that instead of calling TypeMap::Dump, it does 
something else if `-dump-clang-ast` flag is present (this "else" resuling in 
the printing of clang ast)?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67994/new/

https://reviews.llvm.org/D67994



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to