teemperor accepted this revision.
teemperor added a comment.
This revision is now accepted and ready to land.

> Personally I think if there is the pointer (and sizeof(std::unique_ptr<XXX, 
> YYY> == 16) there should be the "deleter =" specified even if it is default 
> deleter.

I don't think that it can happen that `sizeof(ptr) == 16` with a reasonable 
unique_ptr/default_delete implementation, but I think in theory it could be 
possible.

But anyway, after some offline discussion with @jankratochvil  the consensus 
was:

- We should hide the deleter if it's stateless (default_delete or a 
user-specified deleter that is empty) as the less verbose output is more useful 
for command line users.
- Users that care about the (user-specified) empty deleter (or the default 
deleter) can always inspect the type via the template argument. That anyway has 
to happen via the SB API and the ValueObject doesn't provide a great benefit 
there.

So this patch LGTM, but please update the update comment when landing to 
something like:

  // Add a 'deleter' child if there was a non-empty deleter type specified.
  // 
  // The object might have size=1 in the TypeSystem but occupies no dedicated 
storage due
  // to no_unique_address, so infer the actual size from the total size of the 
unique_ptr class.
  // If sizeof(unique_ptr) == sizeof(void*) then the deleter is empty and 
should be hidden.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104283

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

Reply via email to