shafik added a comment.

In D67994#1682051 <https://reviews.llvm.org/D67994#1682051>, @labath wrote:

> For dumping a specific type something like this could be right, but for 
> "indiscriminately dumping" everything, this seems to be a bit fragile.
>
> Would it be possible to make this use the `SymbolFile::DumpClangAST` method 
> (this is what the "image dump ast" lldb command uses), and then possibly 
> change that method to include any extra information you need? I already see 
> the `DefinitionData` line when i do a "image dump clang ast", so it's 
> possible you wouldn't need to change anything there...
>
> FTR, this is what i get from image dump ast:
>
>   Dumping clang ast for 1 modules.
>   TranslationUnitDecl 0x561fa5fd9128 <<invalid sloc>> <invalid sloc> 
> <undeserialized declarations>
>   `-NamespaceDecl 0x561fa5fd99e8 <<invalid sloc>> <invalid sloc> Q
>     `-CXXRecordDecl 0x561fa5fd9a70 <<invalid sloc>> <invalid sloc> struct A 
> definition
>       |-DefinitionData pass_in_registers empty standard_layout 
> trivially_copyable has_user_declared_ctor can_const_default_init
>       | |-DefaultConstructor exists non_trivial user_provided 
> defaulted_is_constexpr
>       | |-CopyConstructor simple trivial has_const_param needs_implicit 
> implicit_has_const_param
>       | |-MoveConstructor exists simple trivial needs_implicit
>       | |-CopyAssignment trivial has_const_param needs_implicit 
> implicit_has_const_param
>       | |-MoveAssignment exists simple trivial needs_implicit
>       | `-Destructor simple irrelevant trivial needs_implicit
>       `-CXXConstructorDecl 0x561fa5fd9bf0 <<invalid sloc>> <invalid sloc> A 
> 'void ()'
>


Using this approach for this simple example:

  using ULongArrayTypedef = unsigned long[10];
  
  int main() {
      ULongArrayTypedef *p;
  }

I only obtain:

  TranslationUnitDecl 0x7fd5eb023608 <<invalid sloc>> <invalid sloc> 
<undeserialized declarations>

Vs this output for what I have now:

  ULongArrayTypedef *
  PointerType 0x7fea0a825080 'unsigned long (*)[10]'
  `-ConstantArrayType 0x7fea0a824ed0 'unsigned long [10]' 10 
    `-BuiltinType 0x7fea0a8247c0 'unsigned long'
  int
  BuiltinType 0x7fea0a824700 'int'
  ULongArrayTypedef
  TypedefDecl 0x7fea0a825000 <<invalid sloc>> <invalid sloc> ULongArrayTypedef 
'unsigned long [10]'
  `-ConstantArrayType 0x7fea0a824ed0 'unsigned long [10]' 10 
    `-BuiltinType 0x7fea0a8247c0 'unsigned long'
  long unsigned int
  BuiltinType 0x7fea0a8247c0 'unsigned long'
  unsigned long [10]
  ConstantArrayType 0x7fea0a824ed0 'unsigned long [10]' 10 
  `-BuiltinType 0x7fea0a8247c0 'unsigned long'
  main
  FunctionProtoType 0x7fea0a824f10 'int (void)' cdecl
  `-BuiltinType 0x7fea0a824700 'int'

I believe this is due to us being lazy as to when we import.


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