aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ProfileData/MemProfTest.cpp
diff options
context:
space:
mode:
authorZequan Wu <zequanwu@google.com>2025-05-28 13:04:24 -0700
committerGitHub <noreply@github.com>2025-05-28 16:04:24 -0400
commit02916a432ca6465e2e45f67be94f1c89c9cd425d (patch)
tree60ff8ca17dcc87eabb23ae21d1dc1ec90d4eb063 /llvm/unittests/ProfileData/MemProfTest.cpp
parentcb7f4ff03cc20b04360d75f78e2255214a617d5f (diff)
downloadllvm-02916a432ca6465e2e45f67be94f1c89c9cd425d.zip
llvm-02916a432ca6465e2e45f67be94f1c89c9cd425d.tar.gz
llvm-02916a432ca6465e2e45f67be94f1c89c9cd425d.tar.bz2
[lldb][Formatters] Add --pointer-match-depth option to `type summary add` command. (#138209)
Currently, the type `T`'s summary formatter will be matched for `T`, `T*`, `T**` and so on. This is unexpected in many data formatters. Such unhandled cases could cause the data formatter to crash. An example would be the lldb's built-in data formatter for `std::optional`: ``` $ cat main.cpp #include <optional> int main() { std::optional<int> o_null; auto po_null = &o_null; auto ppo_null = &po_null; auto pppo_null = &ppo_null; return 0; } $ clang++ -g main.cpp && lldb -o "b 8" -o "r" -o "v pppo_null" [lldb crash] ``` This change adds an options `--pointer-match-depth` to `type summary add` command to allow users to specify how many layer of pointers can be dereferenced at most when matching a summary formatter of type `T`, as Jim suggested [here](https://github.com/llvm/llvm-project/pull/124048/#issuecomment-2611164133). By default, this option has value 1 which means summary formatter for `T` could also be used for `T*` but not `T**` nor beyond. This option is no-op when `--skip-pointers` is set as well. I didn't add such option for `type synthetic add`, `type format add`, `type filter add`, because it useful for those command. Instead, they all have the pointer match depth of 1. When printing a type `T*`, lldb never print the children of `T` even if there is a synthetic formatter registered for `T`.
Diffstat (limited to 'llvm/unittests/ProfileData/MemProfTest.cpp')
0 files changed, 0 insertions, 0 deletions