<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/docs/HowToUpdateDebugInfo.rst, branch revert-107279-dl-coverage-2-coverage-impl</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>Revert "[DLCov] Implement DebugLoc coverage tracking (#107279)"</title>
<updated>2025-04-24T23:33:24+00:00</updated>
<author>
<name>Stephen Tozer</name>
<email>Melamoto@gmail.com</email>
</author>
<published>2025-04-24T23:33:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2db36d8693610acbe87bed2f10e49ca938429bde'/>
<id>2db36d8693610acbe87bed2f10e49ca938429bde</id>
<content type='text'>
This reverts commit a9d93ecf1f8d2cfe3f77851e0df179b386cff353.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit a9d93ecf1f8d2cfe3f77851e0df179b386cff353.
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLCov] Implement DebugLoc coverage tracking (#107279)</title>
<updated>2025-04-24T18:41:25+00:00</updated>
<author>
<name>Stephen Tozer</name>
<email>stephen.tozer@sony.com</email>
</author>
<published>2025-04-24T18:41:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a9d93ecf1f8d2cfe3f77851e0df179b386cff353'/>
<id>a9d93ecf1f8d2cfe3f77851e0df179b386cff353</id>
<content type='text'>
This is part of a series of patches that tries to improve DILocation bug
detection in Debugify; see the review for more details. This is the patch
that adds the main feature, adding a set of `DebugLoc::get&lt;Kind&gt;`
functions that can be used for instructions with intentionally empty
DebugLocs to prevent Debugify from treating them as bugs, removing the
currently-pervasive false positives and allowing us to use Debugify (in
its original DI preservation mode) to reliably detect existing bugs and
regressions. This patch does not add uses of these functions, except for
once in Clang before optimizations, and in
`Instruction::dropLocation()`, since that is an obvious case that
immediately removes a set of false positives.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is part of a series of patches that tries to improve DILocation bug
detection in Debugify; see the review for more details. This is the patch
that adds the main feature, adding a set of `DebugLoc::get&lt;Kind&gt;`
functions that can be used for instructions with intentionally empty
DebugLocs to prevent Debugify from treating them as bugs, removing the
currently-pervasive false positives and allowing us to use Debugify (in
its original DI preservation mode) to reliably detect existing bugs and
regressions. This patch does not add uses of these functions, except for
once in Clang before optimizations, and in
`Instruction::dropLocation()`, since that is an obvious case that
immediately removes a set of false positives.</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo] Preserve line and column number when merging debug info. (#129960)</title>
<updated>2025-04-04T16:37:25+00:00</updated>
<author>
<name>Snehasish Kumar</name>
<email>snehasishk@google.com</email>
</author>
<published>2025-04-04T16:37:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f9193f3b18f08547e2f92b5e354a44655bfc1b94'/>
<id>f9193f3b18f08547e2f92b5e354a44655bfc1b94</id>
<content type='text'>
This patch introduces a new option `-preserve-merged-debug-info` to
preserve an arbitrary but deterministic version of debug information
when DILocations are merged. This is intended to be used in production
environments from which sample based profiles are derived such as
AutoFDO and MemProf.

With this patch we have see a 0.2% improvement on an internal workload
at Google when generating AutoFDO profiles. It also significantly
improves the ability for MemProf by preserving debug info for merged
call instructions used in the contextual profile.

---------

Co-authored-by: Krzysztof Pszeniczny &lt;kpszeniczny@google.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces a new option `-preserve-merged-debug-info` to
preserve an arbitrary but deterministic version of debug information
when DILocations are merged. This is intended to be used in production
environments from which sample based profiles are derived such as
AutoFDO and MemProf.

With this patch we have see a 0.2% improvement on an internal workload
at Google when generating AutoFDO profiles. It also significantly
improves the ability for MemProf by preserving debug info for merged
call instructions used in the contextual profile.

---------

Co-authored-by: Krzysztof Pszeniczny &lt;kpszeniczny@google.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo] Update policy for when to merge locations (#115349)</title>
<updated>2024-11-12T09:16:59+00:00</updated>
<author>
<name>Stephen Tozer</name>
<email>stephen.tozer@sony.com</email>
</author>
<published>2024-11-12T09:16:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6d23ac1aa250e05b1c6781922da584fe9908b537'/>
<id>6d23ac1aa250e05b1c6781922da584fe9908b537</id>
<content type='text'>
Following discussions on PR #114231 this patch changes the policy on
merging locations, making the rule that new instructions should use a
merge of the locations of all the instructions whose output is produced
by the new instructions; in the case where only one instruction's output
is produced, as in most InstCombine optimizations, we use only that
instruction's location.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Following discussions on PR #114231 this patch changes the policy on
merging locations, making the rule that new instructions should use a
merge of the locations of all the instructions whose output is produced
by the new instructions; in the case where only one instruction's output
is produced, as in most InstCombine optimizations, we use only that
instruction's location.</pre>
</div>
</content>
</entry>
<entry>
<title>Refine the examples in the debug info document (#86272)</title>
<updated>2024-09-09T05:49:38+00:00</updated>
<author>
<name>Shan Huang</name>
<email>52285902006@stu.ecnu.edu.cn</email>
</author>
<published>2024-09-09T05:49:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ac9355446291a02239ce9b45d0c2225a4db0515a'/>
<id>ac9355446291a02239ce9b45d0c2225a4db0515a</id>
<content type='text'>
This PR modifies the examples of section "When to merge instruction
locations" in
[HowToUpdateDebugInfo](https://llvm.org/docs/HowToUpdateDebugInfo.html)
according to [the
discussion](https://discourse.llvm.org/t/debuginfo-merging-instruction-locations-of-hoisted-instructions/77357),
revise one misleading counterexample and refining the description of
hoisting identical instructions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR modifies the examples of section "When to merge instruction
locations" in
[HowToUpdateDebugInfo](https://llvm.org/docs/HowToUpdateDebugInfo.html)
according to [the
discussion](https://discourse.llvm.org/t/debuginfo-merging-instruction-locations-of-hoisted-instructions/77357),
revise one misleading counterexample and refining the description of
hoisting identical instructions.</pre>
</div>
</content>
</entry>
<entry>
<title>[RemoveDIs] Update all docs to use debug records (#91768)</title>
<updated>2024-06-11T13:16:32+00:00</updated>
<author>
<name>Stephen Tozer</name>
<email>stephen.tozer@sony.com</email>
</author>
<published>2024-06-11T13:16:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=400d4fd7b6dea9c7cdd255bb804fcd0ee77f6d42'/>
<id>400d4fd7b6dea9c7cdd255bb804fcd0ee77f6d42</id>
<content type='text'>
As we approach the state where support for debug intrinsics is dropping and
we print and use debug records by default, the documentation should be updated
to refer to debug records as the primary debug info representation, with
debug intrinsics being relegated to an optional alternative.

This patch performs a few updates:
- Replace references to intrinsics with references to records across all
the documentation.
- Replace intrinsics with records in code examples.
- Move debug records prior to debug intrinsics in the
SourceLevelDebugging document, and change text to refer to them as the
primary representation.
- Add release notes describing the change.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As we approach the state where support for debug intrinsics is dropping and
we print and use debug records by default, the documentation should be updated
to refer to debug records as the primary debug info representation, with
debug intrinsics being relegated to an optional alternative.

This patch performs a few updates:
- Replace references to intrinsics with references to records across all
the documentation.
- Replace intrinsics with records in code examples.
- Move debug records prior to debug intrinsics in the
SourceLevelDebugging document, and change text to refer to them as the
primary representation.
- Add release notes describing the change.</pre>
</div>
</content>
</entry>
<entry>
<title>[Assignment Tracking][1/*] Add initial docs for Assignment Tracking</title>
<updated>2022-11-02T13:47:50+00:00</updated>
<author>
<name>OCHyams</name>
<email>orlando.hyams@sony.com</email>
</author>
<published>2022-11-02T13:42:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=33c7ae55e729069be754f56c4d4606cdeddd377b'/>
<id>33c7ae55e729069be754f56c4d4606cdeddd377b</id>
<content type='text'>
The Assignment Tracking debug-info feature is outlined in this RFC:

https://discourse.llvm.org/t/
  rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir

Add documentation outlining the intent and design.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Assignment Tracking debug-info feature is outlined in this RFC:

https://discourse.llvm.org/t/
  rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir

Add documentation outlining the intent and design.
</pre>
</div>
</content>
</entry>
<entry>
<title>[Debugify] Limit number of processed functions for original mode</title>
<updated>2022-04-21T11:58:17+00:00</updated>
<author>
<name>Nikola Tesic</name>
<email>nikola.tesic@syrmia.com</email>
</author>
<published>2022-04-21T11:56:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c5600aef888b9c32c578edc9c807d61d72a37c08'/>
<id>c5600aef888b9c32c578edc9c807d61d72a37c08</id>
<content type='text'>
Debugify in OriginalDebugInfo mode, does (DebugInfo) collect-before-pass &amp; check-after-pass
for each instruction, which is pretty expensive. When used to analyze DebugInfo losses
in large projects (like LLVM), this raises the build time unacceptably.
This patch introduces a limit for the number of processed functions per compile unit.
By default, the limit is set to UINT_MAX (practically unlimited), and by using the introduced
option  -debugify-func-limit  the limit could be set to any positive integer number.

Differential revision: https://reviews.llvm.org/D115714
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Debugify in OriginalDebugInfo mode, does (DebugInfo) collect-before-pass &amp; check-after-pass
for each instruction, which is pretty expensive. When used to analyze DebugInfo losses
in large projects (like LLVM), this raises the build time unacceptably.
This patch introduces a limit for the number of processed functions per compile unit.
By default, the limit is set to UINT_MAX (practically unlimited), and by using the introduced
option  -debugify-func-limit  the limit could be set to any positive integer number.

Differential revision: https://reviews.llvm.org/D115714
</pre>
</div>
</content>
</entry>
<entry>
<title>Recommit: "[Debugify][Original DI] Test dbg var loc preservation""</title>
<updated>2021-05-21T09:04:29+00:00</updated>
<author>
<name>Djordje Todorovic</name>
<email>djordje.todorovic@syrmia.com</email>
</author>
<published>2021-05-21T08:57:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b9076d119a5b2d380d8868ee5e4dc4fdc5ba04a6'/>
<id>b9076d119a5b2d380d8868ee5e4dc4fdc5ba04a6</id>
<content type='text'>
    [Debugify][Original DI] Test dbg var loc preservation

    This is an improvement of [0]. This adds checking of
    original llvm.dbg.values()/declares() instructions in
    optimizations.

    We have picked a real issue that has been found with
    this (actually, picked one variable location missing
    from [1] and resolved the issue), and the result is
    the fix for that -- D100844.

    Before applying the D100844, using the options from [0]
    (but with this patch applied) on the compilation of GDB 7.11,
    the final HTML report for the debug-info issues can be found
    at [1] (please scroll down, and look for
    "Summary of Variable Location Bugs"). After applying
    the D100844, the numbers has improved a bit -- please take
    a look into [2].

    [0] https://llvm.org/docs/HowToUpdateDebugInfo.html#\
        test-original-debug-info-preservation-in-optimizations
    [1] https://djolertrk.github.io/di-check-before-adce-fix/
    [2] https://djolertrk.github.io/di-check-after-adce-fix/

    Differential Revision: https://reviews.llvm.org/D100845

The Unit test was failing because the pass from the test that
modifies the IR, in its runOnFunction() didn't return 'true',
so the expensive-check configuration triggered an assertion.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    [Debugify][Original DI] Test dbg var loc preservation

    This is an improvement of [0]. This adds checking of
    original llvm.dbg.values()/declares() instructions in
    optimizations.

    We have picked a real issue that has been found with
    this (actually, picked one variable location missing
    from [1] and resolved the issue), and the result is
    the fix for that -- D100844.

    Before applying the D100844, using the options from [0]
    (but with this patch applied) on the compilation of GDB 7.11,
    the final HTML report for the debug-info issues can be found
    at [1] (please scroll down, and look for
    "Summary of Variable Location Bugs"). After applying
    the D100844, the numbers has improved a bit -- please take
    a look into [2].

    [0] https://llvm.org/docs/HowToUpdateDebugInfo.html#\
        test-original-debug-info-preservation-in-optimizations
    [1] https://djolertrk.github.io/di-check-before-adce-fix/
    [2] https://djolertrk.github.io/di-check-after-adce-fix/

    Differential Revision: https://reviews.llvm.org/D100845

The Unit test was failing because the pass from the test that
modifies the IR, in its runOnFunction() didn't return 'true',
so the expensive-check configuration triggered an assertion.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[Debugify][Original DI] Test dbg var loc preservation"</title>
<updated>2021-05-20T14:11:35+00:00</updated>
<author>
<name>Djordje Todorovic</name>
<email>djordje.todorovic@syrmia.com</email>
</author>
<published>2021-05-20T14:10:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0ae3c1d4d7c32fd4c14f1b584b18904ecfab5b14'/>
<id>0ae3c1d4d7c32fd4c14f1b584b18904ecfab5b14</id>
<content type='text'>
This reverts commit 76f375f3d9d6902820ffc21200e454926748c678.

This will be pushed again, after investigating a test failure:
https://lab.llvm.org/buildbot/#/builders/16/builds/11254
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 76f375f3d9d6902820ffc21200e454926748c678.

This will be pushed again, after investigating a test failure:
https://lab.llvm.org/buildbot/#/builders/16/builds/11254
</pre>
</div>
</content>
</entry>
</feed>
