| #
ce96c26c |
| 29-Jan-2025 |
David Blaikie <dblaikie@gmail.com> |
Revert "[llvm][DebugInfo] Attach object-pointer to DISubprogram declarations (#122742)" (#124853)
This introduces a substantial (5-10%) regression in .debug_info size, so
we're discussing alternati
Revert "[llvm][DebugInfo] Attach object-pointer to DISubprogram declarations (#122742)" (#124853)
This introduces a substantial (5-10%) regression in .debug_info size, so
we're discussing alternatives in #122742 and #124790.
This reverts commit 7c729418d721147bf1f2b257afd30f84721888ad.
show more ...
|
|
Revision tags: llvmorg-21-init |
|
| #
7c729418 |
| 17-Jan-2025 |
Michael Buch <michaelbuch12@gmail.com> |
[llvm][DebugInfo] Attach object-pointer to DISubprogram declarations (#122742)
Currently Clang only attaches `DW_AT_object_pointer` to
`DW_TAG_subprogram` definitions. LLDB constructs C++ method ty
[llvm][DebugInfo] Attach object-pointer to DISubprogram declarations (#122742)
Currently Clang only attaches `DW_AT_object_pointer` to
`DW_TAG_subprogram` definitions. LLDB constructs C++ method types from
their `DW_TAG_subprogram` declaration, which is also the point at which
it needs to determine whether a method is static or not. LLDB's
heuristic for this could be very simple if we emitted
`DW_AT_object_pointer` on declarations. But since we don't, LLDB has to
guess whether an argument is an implicit object parameter based on the
DW_AT_name and DW_AT_type.
To simplify LLDB's job (and to eventually support C++23's explicit
object parameters), this patch adds the `DIFlagObjectPointer` to
`DISubprogram` declarations.
For reference, GCC attaches the object-pointer DIE to both the
definition and declaration: https://godbolt.org/z/3TWjTfWon
Fixes https://github.com/llvm/llvm-project/issues/120973
show more ...
|
|
Revision tags: llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4 |
|
| #
d6e4c4f8 |
| 15-May-2023 |
J. Ryan Stinnett <jryans@gmail.com> |
Revert "[X86] Use the CFA as the DWARF frame base for better variable locations around calls."
This reverts commit d421f5226048e4a5d88aab157d0f4d434c43f208.
LLDB tests are failing as shown in https
Revert "[X86] Use the CFA as the DWARF frame base for better variable locations around calls."
This reverts commit d421f5226048e4a5d88aab157d0f4d434c43f208.
LLDB tests are failing as shown in https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/55133/testReport/
show more ...
|
| #
d421f522 |
| 15-May-2023 |
Kyle Huey <khuey@pernos.co> |
[X86] Use the CFA as the DWARF frame base for better variable locations around calls.
Prior to this patch, for the DWARF frame base LLVM uses the frame pointer register if available, otherwise the s
[X86] Use the CFA as the DWARF frame base for better variable locations around calls.
Prior to this patch, for the DWARF frame base LLVM uses the frame pointer register if available, otherwise the stack pointer register. If the stack pointer register is being used and a call or other code modifies the stack pointer during the body of the function this results in the locations being wrong and the debugger displaying the wrong values for variables.
By using DW_OP_call_frame_cfa in these situations the emitted location for the variable will automatically handle changes in the stack pointer. The CFA needs to be adjusted for the offset between the frame pointer/stack pointer to allow the variable locations themselves to remain unchanged by this patch.
Reviewed By: #debug-info, scott.linder, jryans
Differential Revision: https://reviews.llvm.org/D143463
show more ...
|
|
Revision tags: llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6 |
|
| #
a273c408 |
| 28-Nov-2022 |
Fangrui Song <i@maskray.me> |
llvm/tools: Convert tests to opaque pointers
|
|
Revision tags: llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
c450e47a |
| 15-Oct-2021 |
djtodoro <djordje.todorovic@syrmia.com> |
[llvm-dwarfdump] Fix unsigned overflow when calculating stats
This fixes https://bugs.llvm.org/show_bug.cgi?id=51652.
The idea is to bump all the stat fields to 64-bit wide unsigned integers. I've
[llvm-dwarfdump] Fix unsigned overflow when calculating stats
This fixes https://bugs.llvm.org/show_bug.cgi?id=51652.
The idea is to bump all the stat fields to 64-bit wide unsigned integers. I've confirmed this resolves the use case for chromium.
Differential Revision: https://reviews.llvm.org/D109217
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
1ed29636 |
| 10-May-2021 |
Djordje Todorovic <djordje.todorovic@syrmia.com> |
[llvm-dwarfdump] Fix abstract origin vars location stats calculation
There are cases where a concrete DIE with DW_TAG_subprogram can have abstract_origin attribute, so we handle that situation as we
[llvm-dwarfdump] Fix abstract origin vars location stats calculation
There are cases where a concrete DIE with DW_TAG_subprogram can have abstract_origin attribute, so we handle that situation as well.
Differential Revision: https://reviews.llvm.org/D101025
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3 |
|
| #
7b319df2 |
| 01-Mar-2021 |
serge-sans-paille <sguelton@redhat.com> |
Revert "Use the default seed value for djb hash for StringMap"
This reverts commit d84440ec919019ac446241db72cfd905c6ac9dfa.
It breaks (at least) lldb and lld validation
https://lab.llvm.org/build
Revert "Use the default seed value for djb hash for StringMap"
This reverts commit d84440ec919019ac446241db72cfd905c6ac9dfa.
It breaks (at least) lldb and lld validation
https://lab.llvm.org/buildbot/#/builders/68/builds/7837 https://lab.llvm.org/buildbot/#/builders/36/builds/5495
show more ...
|
| #
d84440ec |
| 24-Feb-2021 |
serge-sans-paille <sguelton@redhat.com> |
Use the default seed value for djb hash for StringMap
See original comment in 560ce2c70fb1fe8e4b9b5e39c54e494a50373ba8 Baiscally the default seed value results in less collision, but changes the ite
Use the default seed value for djb hash for StringMap
See original comment in 560ce2c70fb1fe8e4b9b5e39c54e494a50373ba8 Baiscally the default seed value results in less collision, but changes the iteration order, which matters for a few test cases.
Differential Revision: https://reviews.llvm.org/D97396
show more ...
|
| #
599711dc |
| 26-Feb-2021 |
Fangrui Song <i@maskray.me> |
[llvm-dwarfdump] StringMap -> MapVector to make iteration order stable
Exposed by D97396
|
|
Revision tags: llvmorg-12.0.0-rc2 |
|
| #
b6db47d7 |
| 08-Feb-2021 |
Djordje Todorovic <djordje.todorovic@syrmia.com> |
[llvm-dwarfdump][locstats] Unify handling of inlined vars with no loc
The presence or absence of an inline variable (as well as formal parameter) with only an abstract_origin ref (without DW_AT_loca
[llvm-dwarfdump][locstats] Unify handling of inlined vars with no loc
The presence or absence of an inline variable (as well as formal parameter) with only an abstract_origin ref (without DW_AT_location) should not change the location coverage.
It means, for both:
DW_TAG_inlined_subroutine DW_AT_abstract_origin (0x0000004e "f") DW_AT_low_pc (0x0000000000000010) DW_AT_high_pc (0x0000000000000013) DW_TAG_formal_parameter DW_AT_abstract_origin (0x0000005a "b")
and,
DW_TAG_inlined_subroutine DW_AT_abstract_origin (0x0000004e "f") DW_AT_low_pc (0x0000000000000010) DW_AT_high_pc (0x0000000000000013)
we should report 0% location coverage. If we add DW_AT_location, for both cases the coverage should be improved.
Differential Revision: https://reviews.llvm.org/D96045
show more ...
|
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
db3dba52 |
| 30-Oct-2020 |
Jonas Devlieghere <jonas@devlieghere.com> |
[dwarfdump] Recognize __apple sections as debug info sections
Recognize the __apple_ sections as debug info sections and make sure they're included in the --show-sections-sizes output.
Differential
[dwarfdump] Recognize __apple sections as debug info sections
Recognize the __apple_ sections as debug info sections and make sure they're included in the --show-sections-sizes output.
Differential revision: https://reviews.llvm.org/D90433
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
3ff4d75c |
| 25-Aug-2020 |
OCHyams <orlando.hyams@sony.com> |
[llvm-dwarfdump] Fix misleading scope byte coverage statistics
Fixes PR46575.
Bump statistics version to 6.
Without this patch, for a variable described with a location list the stat 'sum_all_vari
[llvm-dwarfdump] Fix misleading scope byte coverage statistics
Fixes PR46575.
Bump statistics version to 6.
Without this patch, for a variable described with a location list the stat 'sum_all_variables(#bytes in parent scope covered by DW_AT_location)' is calculated by summing all bytes covered by the location ranges in the list and capping the result to the number of bytes in the parent scope. With the patch, only bytes which overlap with the parent DIE scope address ranges contribute to the stat. A new stat 'sum_all_variables(#bytes in any scope covered by DW_AT_location)' has been added which displays the total bytes covered when ignoring scopes.
show more ...
|
| #
481c3b8c |
| 21-Aug-2020 |
Fangrui Song <maskray@google.com> |
[llvm-dwarfdump] --statistics: break lines and indent by 2
so that the user does not have to pipe the output to `jq` or `python -m json.tool`. This change makes testing more convenient because `-NEX
[llvm-dwarfdump] --statistics: break lines and indent by 2
so that the user does not have to pipe the output to `jq` or `python -m json.tool`. This change makes testing more convenient because `-NEXT` patterns can be used. The "prettify by default" is a good tradeoff to make. The output size increases a bit.
Differential Revision: https://reviews.llvm.org/D86318
show more ...
|
| #
2b0f40b0 |
| 20-Aug-2020 |
Fangrui Song <maskray@google.com> |
[llvm-dwarfdump] Fix a typo: witin -> within
|
|
Revision tags: llvmorg-11.0.0-rc2 |
|
| #
aa48a480 |
| 18-Aug-2020 |
Fangrui Song <i@maskray.me> |
[llvm-dwarfdump][test] Add a --statistics test for a DW_AT_artificial variable
There is an untested but useful case: `this` (even if not written) is counted as a source variable.
Reviewed By: dblai
[llvm-dwarfdump][test] Add a --statistics test for a DW_AT_artificial variable
There is an untested but useful case: `this` (even if not written) is counted as a source variable.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D86044
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1 |
|
| #
67d0e216 |
| 15-May-2020 |
Djordje Todorovic <djordje.todorovic@syrmia.com> |
[NFC][test] Add missing ':' after 'CHECK'
Without the ':' the check command doesn't do anything. This typo was introduced along with the commit for the D77789.
|
| #
0a4defe8 |
| 23-Apr-2020 |
Djordje Todorovic <djordje.todorovic@syrmia.com> |
[llvm-dwarfdump][Stats] Clean up
This addresses: -Clean up the source code -Refactor the JSON fields -Fix the test cases -Improve the docs for the stats output
Differential Revision: https:
[llvm-dwarfdump][Stats] Clean up
This addresses: -Clean up the source code -Refactor the JSON fields -Fix the test cases -Improve the docs for the stats output
Differential Revision: https://reviews.llvm.org/D77789
show more ...
|
| #
7c5d2bec |
| 02-Apr-2020 |
Jonathan Roelofs <jroelofs@jroelofs.com> |
[llvm] Fix missing FileCheck directive colons
https://reviews.llvm.org/D77352
|
| #
5e508b9b |
| 02-Apr-2020 |
Djordje Todorovic <djordje.todorovic@syrmia.com> |
[llvm-dwarfdump] Add the --show-sections-sizes option
Add an option to llvm-dwarfdump to calculate the bytes within the debug sections. Dump this numbers when using --statistics option as well.
Thi
[llvm-dwarfdump] Add the --show-sections-sizes option
Add an option to llvm-dwarfdump to calculate the bytes within the debug sections. Dump this numbers when using --statistics option as well.
This is an initial patch (e.g. we should support other units, since we only support 'bytes' now).
Differential Revision: https://reviews.llvm.org/D74205
show more ...
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init |
|
| #
5499e2f4 |
| 14-Jan-2020 |
Kristina Bessonova <kbessonova@accesssoftek.com> |
[llvm-dwarfdump][Statistics] Distinguish parameters with same name or w/o a name
A few DW_TAG_formal_parameter's of the same function may have the same name (e.g. variadic (template) functions) or d
[llvm-dwarfdump][Statistics] Distinguish parameters with same name or w/o a name
A few DW_TAG_formal_parameter's of the same function may have the same name (e.g. variadic (template) functions) or don't have a name at all (if the parameter isn't used inside the function body), but we still need to be able to distinguish between them to get correct number of 'total vars' and 'availability' metric.
Reviewed by: aprantl
Differential Revision: https://reviews.llvm.org/D73003
show more ...
|
| #
2e5d20bd |
| 19-Jan-2020 |
Kristina Bessonova <kbessonova@accesssoftek.com> |
[llvm-dwarfdump][Statistics] Ignore declarations of global variables
Reviewed by: djtodoro
Differential Revision: https://reviews.llvm.org/D73001
|
| #
e76106e0 |
| 09-Jan-2020 |
Kristina Bessonova <kbessonova@accesssoftek.com> |
[llvm-dwarfdump][Statistics] Ignore DW_TAG_subroutine_type in statistics
DW_TAG_subroutine_type is not really useful for statistics purposes, as it never has location information. But it may contain
[llvm-dwarfdump][Statistics] Ignore DW_TAG_subroutine_type in statistics
DW_TAG_subroutine_type is not really useful for statistics purposes, as it never has location information. But it may contain DW_TAG_formal_parameter children that generate number of parameters w/o location and decrease 'availability' metric significantly.
Reviewed by: djtodoro
Differential Revision: https://reviews.llvm.org/D72983
show more ...
|
|
Revision tags: llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
68f464ac |
| 19-Nov-2019 |
Kristina Bessonova <kbessonova@accesssoftek.com> |
[llvm-dwarfdump][Statistics] Unify coverage statistic computation
Summary: The patch removes OffsetToFirstDefinition in the 'scope bytes total' statistic computation. Thus it unifies the way the sco
[llvm-dwarfdump][Statistics] Unify coverage statistic computation
Summary: The patch removes OffsetToFirstDefinition in the 'scope bytes total' statistic computation. Thus it unifies the way the scope and the coverage buckets are computed. The rationals behind that are the following:
1. OffsetToFirstDefinition was used to calculate the variable's life range. However, there is no simple way to do it accurately, so the scope calculated this way might be misleading. See D69027 for more details on the subject. 2. Both 'scope bytes total' and coverage buckets seem to be intended to represent the same data in different ways. Otherwise, the statistics might be controversial and confusing.
Note that the approach gives up a thorough evaluation of debug information completeness (i.e. coverage buckets by themselves doesn't tell how good the debug information is). Only changes in coverage over time make a 'physical' sense.
Reviewers: djtodoro, aprantl, vsk, dblaikie, avl
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70548
show more ...
|
|
Revision tags: llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1, llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4 |
|
| #
bcdb1f3d |
| 01-Mar-2019 |
Caroline Tice <cmtice@google.com> |
llvm-dwarfdump: Add new variable, parameter and inlining statistics; also function source location statistics.
Add statistics for abstract origins, function, variable and parameter locations; break
llvm-dwarfdump: Add new variable, parameter and inlining statistics; also function source location statistics.
Add statistics for abstract origins, function, variable and parameter locations; break the 'variable' counts down into variables and parameters. Also update call site counting to check for DW_AT_call_{file,line} in addition to DW_TAG_call_site.
Differential revision: https://reviews.llvm.org/D58849
llvm-svn: 355243
show more ...
|