aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorAlex Langford <apl@fb.com>2022-07-12 08:51:30 -0700
committerAlex Langford <apl@fb.com>2022-08-04 11:18:08 -0700
commitbefa77e59a7760d8c4fdd177b234e4a59500f61c (patch)
tree20f383eb76c41d8fb638c48d3a2645d1cc1c05cd /clang/lib/Frontend/CompilerInvocation.cpp
parent1486a2eaf0bd676f89b6e42d2a2620f618f33674 (diff)
downloadllvm-befa77e59a7760d8c4fdd177b234e4a59500f61c.zip
llvm-befa77e59a7760d8c4fdd177b234e4a59500f61c.tar.gz
llvm-befa77e59a7760d8c4fdd177b234e4a59500f61c.tar.bz2
[lldb] Filter DIEs based on qualified name where possible
Context: When setting a breakpoint by name, we invoke Module::FindFunctions to find the function(s) in question. However, we use a Module::LookupInfo to first process the user-provided name and figure out exactly what we're looking for. When we actually perform the function lookup, we search for the basename. After performing the search, we then filter out the results using Module::LookupInfo::Prune. For example, given a::b::foo we would first search for all instances of foo and then filter out the results to just names that have a::b::foo in them. As one can imagine, this involves a lot of debug info processing that we do not necessarily need to be doing. Instead of doing one large post-processing step after finding each instance of `foo`, we can filter them as we go to save time. Some numbers: Debugging LLDB and placing a breakpoint on llvm::itanium_demangle::StringView::begin without this change takes approximately 70 seconds and resolves 31,920 DIEs. With this change, placing the breakpoint takes around 30 seconds and resolves 8 DIEs. Differential Revision: https://reviews.llvm.org/D129682
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions