<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/DebugInfo/Generic, branch users/nico/python-2</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>[RemoveDIs] Fix rotten --implicit-check-not lines (#144711)</title>
<updated>2025-06-24T11:32:50+00:00</updated>
<author>
<name>Orlando Cazalet-Hyams</name>
<email>orlando.hyams@sony.com</email>
</author>
<published>2025-06-24T11:32:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1dc46d45fcf7869f7e8edc5315aec6158f77966e'/>
<id>1dc46d45fcf7869f7e8edc5315aec6158f77966e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[CodeGen][COFF] Always emit CodeView compiler info on Windows targets (#142970)</title>
<updated>2025-06-13T20:48:29+00:00</updated>
<author>
<name>Jacek Caban</name>
<email>jacek@codeweavers.com</email>
</author>
<published>2025-06-13T20:48:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=be5c96bfac328fed548c532bbe1710fe23460a85'/>
<id>be5c96bfac328fed548c532bbe1710fe23460a85</id>
<content type='text'>
MSVC always emits minimal CodeView metadata with compiler information,
even when debug info is otherwise disabled. Other tools may rely on this
metadata being present. For example, linkers use it to determine whether
hotpatching is enabled for the object file.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MSVC always emits minimal CodeView metadata with compiler information,
even when debug info is otherwise disabled. Other tools may rely on this
metadata being present. For example, linkers use it to determine whether
hotpatching is enabled for the object file.</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo][RemoveDIs] Use autoupgrader to convert old debug-info (#143452)</title>
<updated>2025-06-11T12:56:30+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2025-06-11T12:56:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3d7aa961ac96f83d2e28f107c6dfa5a6a279b364'/>
<id>3d7aa961ac96f83d2e28f107c6dfa5a6a279b364</id>
<content type='text'>
By chance, two things have prevented the autoupgrade path being
exercised much so far:
 * LLParser setting the debug-info mode to "old" on seeing intrinsics,
* The test in AutoUpgrade.cpp wanting to upgrade into a "new" debug-info
block.

In practice, this appears to mean this code path hasn't seen the various
invalid inputs that can come its way. This commit does a number of
things:
* Tolerates the various illegal inputs that can be written with
debug-intrinsics, and that must be tolerated until the Verifier runs,
 * Printing illegal/null DbgRecord fields must succeed,
* Verifier errors need to localise the function/block where the error
is,
 * Tests that now see debug records will print debug-record errors,

Plus a few new tests for other intrinsic-to-debug-record failures modes
I found. There are also two edge cases:
* Some of the unit tests switch back and forth between intrinsic and
record modes at will; I've deleted coverage and some assertions to
tolerate this as intrinsic support is now Gone (TM),
* In sroa-extract-bits.ll, the order of debug records flips. This is
because the autoupgrader upgrades in the opposite order to the basic
block conversion routines... which doesn't change the record order, but
_does_ change the use list order in Metadata! This should (TM) have no
consequence to the correctness of LLVM, but will change the order of
various records and the order of DWARF record output too.

I tried to reduce this patch to a smaller collection of changes, but
they're all intertwined, sorry.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By chance, two things have prevented the autoupgrade path being
exercised much so far:
 * LLParser setting the debug-info mode to "old" on seeing intrinsics,
* The test in AutoUpgrade.cpp wanting to upgrade into a "new" debug-info
block.

In practice, this appears to mean this code path hasn't seen the various
invalid inputs that can come its way. This commit does a number of
things:
* Tolerates the various illegal inputs that can be written with
debug-intrinsics, and that must be tolerated until the Verifier runs,
 * Printing illegal/null DbgRecord fields must succeed,
* Verifier errors need to localise the function/block where the error
is,
 * Tests that now see debug records will print debug-record errors,

Plus a few new tests for other intrinsic-to-debug-record failures modes
I found. There are also two edge cases:
* Some of the unit tests switch back and forth between intrinsic and
record modes at will; I've deleted coverage and some assertions to
tolerate this as intrinsic support is now Gone (TM),
* In sroa-extract-bits.ll, the order of debug records flips. This is
because the autoupgrader upgrades in the opposite order to the basic
block conversion routines... which doesn't change the record order, but
_does_ change the use list order in Metadata! This should (TM) have no
consequence to the correctness of LLVM, but will change the order of
various records and the order of DWARF record output too.

I tried to reduce this patch to a smaller collection of changes, but
they're all intertwined, sorry.</pre>
</div>
</content>
</entry>
<entry>
<title>[DebugInfo] Update DebugInfoFinder to take retainedNodes into account (#140285)</title>
<updated>2025-05-20T12:53:15+00:00</updated>
<author>
<name>Vladislav Dzhidzhoev</name>
<email>vdzhidzhoev@accesssoftek.com</email>
</author>
<published>2025-05-20T12:53:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f057a58be39937b2ce8b4a02a13fb1bee3b1f2a2'/>
<id>f057a58be39937b2ce8b4a02a13fb1bee3b1f2a2</id>
<content type='text'>
Since https://reviews.llvm.org/D144004, DISubprogram's retainedNodes
field is used to track DIImportedEntities, in addition to local
variables and labels.

However, the corresponding update for DebugInfoFinder, to make it visit
DISubprogram's retainedNodes, was missing.
This is the fix for it.

This change is separated from
https://github.com/llvm/llvm-project/pull/119001 to simplify it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since https://reviews.llvm.org/D144004, DISubprogram's retainedNodes
field is used to track DIImportedEntities, in addition to local
variables and labels.

However, the corresponding update for DebugInfoFinder, to make it visit
DISubprogram's retainedNodes, was missing.
This is the fix for it.

This change is separated from
https://github.com/llvm/llvm-project/pull/119001 to simplify it.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix XFAIL in debug-names-asm-label.ll</title>
<updated>2025-05-13T03:32:40+00:00</updated>
<author>
<name>Hubert Tong</name>
<email>hubert.reinterpretcast@gmail.com</email>
</author>
<published>2025-05-13T03:32:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6b111dfdb5a273525d1f6e8823518c07e4f37703'/>
<id>6b111dfdb5a273525d1f6e8823518c07e4f37703</id>
<content type='text'>
Missing semicolon to make XFAIL a comment</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Missing semicolon to make XFAIL a comment</pre>
</div>
</content>
</entry>
<entry>
<title>[AIX] Disable debug-names-asm-label.ll due to missing DWARF sections</title>
<updated>2025-05-13T03:17:53+00:00</updated>
<author>
<name>Hubert Tong</name>
<email>hubert.reinterpretcast@gmail.com</email>
</author>
<published>2025-05-13T03:17:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9011c1eccb8652342b4e8fed7c646fbcd2bb76d5'/>
<id>9011c1eccb8652342b4e8fed7c646fbcd2bb76d5</id>
<content type='text'>
See older commit 8037481cb2d729ae3d782c3fed930f69d740fa23.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See older commit 8037481cb2d729ae3d782c3fed930f69d740fa23.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix regex for DW_FORM_string case in multi-variant.ll</title>
<updated>2025-05-13T03:03:18+00:00</updated>
<author>
<name>Hubert Tong</name>
<email>hubert.reinterpretcast@gmail.com</email>
</author>
<published>2025-05-13T03:03:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=64e36da23248b6817e036b5d2c9fa5afb9f2c5e5'/>
<id>64e36da23248b6817e036b5d2c9fa5afb9f2c5e5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow multi-member variants in DWARF (#139300)</title>
<updated>2025-05-12T14:55:38+00:00</updated>
<author>
<name>Tom Tromey</name>
<email>tromey@adacore.com</email>
</author>
<published>2025-05-12T14:55:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=386f2ca03bdbcf5d08e5ec417bdad6c3de01acb6'/>
<id>386f2ca03bdbcf5d08e5ec417bdad6c3de01acb6</id>
<content type='text'>
Currently, each variant in the variant part of a structure type can only
contain a single member. This was sufficient for Rust, where each
variant is represented as its own type.

However, this isn't really enough for Ada, where a variant can have
multiple members.

This patch adds support for this scenario. This is done by allowing the
use of DW_TAG_variant by DICompositeType, and then changing the DWARF
generator to recognize when a DIDerivedType representing a variant holds
one of these. In this case, the fields from the DW_TAG_variant are
inlined into the variant, like so:
```
 &lt;4&gt;&lt;7d&gt;: Abbrev Number: 9 (DW_TAG_variant)
    &lt;7e&gt;   DW_AT_discr_value : 74
 &lt;5&gt;&lt;7f&gt;: Abbrev Number: 7 (DW_TAG_member)
    &lt;80&gt;   DW_AT_name        : (indirect string, offset: 0x43): field0
    &lt;84&gt;   DW_AT_type        : &lt;0xa7&gt;
    &lt;88&gt;   DW_AT_alignment   : 8
    &lt;89&gt;   DW_AT_data_member_location: 0
 &lt;5&gt;&lt;8a&gt;: Abbrev Number: 7 (DW_TAG_member)
    &lt;8b&gt;   DW_AT_name        : (indirect string, offset: 0x4a): field1
    &lt;8f&gt;   DW_AT_type        : &lt;0xa7&gt;
    &lt;93&gt;   DW_AT_alignment   : 8
    &lt;94&gt;   DW_AT_data_member_location: 8
```
Note that the intermediate DIDerivedType is still needed in this
situation, because that is where the discriminants are stored.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, each variant in the variant part of a structure type can only
contain a single member. This was sufficient for Rust, where each
variant is represented as its own type.

However, this isn't really enough for Ada, where a variant can have
multiple members.

This patch adds support for this scenario. This is done by allowing the
use of DW_TAG_variant by DICompositeType, and then changing the DWARF
generator to recognize when a DIDerivedType representing a variant holds
one of these. In this case, the fields from the DW_TAG_variant are
inlined into the variant, like so:
```
 &lt;4&gt;&lt;7d&gt;: Abbrev Number: 9 (DW_TAG_variant)
    &lt;7e&gt;   DW_AT_discr_value : 74
 &lt;5&gt;&lt;7f&gt;: Abbrev Number: 7 (DW_TAG_member)
    &lt;80&gt;   DW_AT_name        : (indirect string, offset: 0x43): field0
    &lt;84&gt;   DW_AT_type        : &lt;0xa7&gt;
    &lt;88&gt;   DW_AT_alignment   : 8
    &lt;89&gt;   DW_AT_data_member_location: 0
 &lt;5&gt;&lt;8a&gt;: Abbrev Number: 7 (DW_TAG_member)
    &lt;8b&gt;   DW_AT_name        : (indirect string, offset: 0x4a): field1
    &lt;8f&gt;   DW_AT_type        : &lt;0xa7&gt;
    &lt;93&gt;   DW_AT_alignment   : 8
    &lt;94&gt;   DW_AT_data_member_location: 8
```
Note that the intermediate DIDerivedType is still needed in this
situation, because that is where the discriminants are stored.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][DebugInfo] Drop \01 mangling prefix when inserting linkage name into accelerator table (#138852)</title>
<updated>2025-05-12T12:34:02+00:00</updated>
<author>
<name>Michael Buch</name>
<email>michaelbuch12@gmail.com</email>
</author>
<published>2025-05-12T12:34:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cede236fa550266c9ee32c458363bb505f512d12'/>
<id>cede236fa550266c9ee32c458363bb505f512d12</id>
<content type='text'>
On some platforms (particularly macOS), a `\01` prefix gets added to the
name in an `asm` label. This gets stripped when we emit the
[`DW_AT_linkage_name`](https://github.com/llvm/llvm-project/blob/2f877c2722e882fe6aaaab44d25b7a49ba0612e1/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp#L531).
But we weren't stripping this prefix when inserting the linkage name
into accelerator tables.

This manifested in an issue where LLDB tried to look up a name in the
index by linkage name, but wasn't able to find it because we indexed it
with the `\01` unstripped.

This patch strips the prefix before indexing.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On some platforms (particularly macOS), a `\01` prefix gets added to the
name in an `asm` label. This gets stripped when we emit the
[`DW_AT_linkage_name`](https://github.com/llvm/llvm-project/blob/2f877c2722e882fe6aaaab44d25b7a49ba0612e1/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp#L531).
But we weren't stripping this prefix when inserting the linkage name
into accelerator tables.

This manifested in an issue where LLDB tried to look up a name in the
index by linkage name, but wasn't able to find it because we indexed it
with the `\01` unstripped.

This patch strips the prefix before indexing.</pre>
</div>
</content>
</entry>
<entry>
<title>Loosen DWARF form check in discriminant-member.ll (#139258)</title>
<updated>2025-05-09T14:05:38+00:00</updated>
<author>
<name>Tom Tromey</name>
<email>tromey@adacore.com</email>
</author>
<published>2025-05-09T14:05:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4ae529b764390fb7b78bf1871bb90ff5c4c7bbbd'/>
<id>4ae529b764390fb7b78bf1871bb90ff5c4c7bbbd</id>
<content type='text'>
The new test discriminant-member.ll (see #138953) failed on AIX. It
seems that the string form is different in the DWARF. The log reads:

          50:  DW_AT_name [DW_FORM_string] ("Discr")

... but the test only looks for DW_FORM_strp. Since the precise form
isn't important here, this patch changes the test to accept any string
form.

---------

Co-authored-by: Hubert Tong &lt;hubert.reinterpretcast@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new test discriminant-member.ll (see #138953) failed on AIX. It
seems that the string form is different in the DWARF. The log reads:

          50:  DW_AT_name [DW_FORM_string] ("Discr")

... but the test only looks for DW_FORM_strp. Since the precise form
isn't important here, this patch changes the test to accept any string
form.

---------

Co-authored-by: Hubert Tong &lt;hubert.reinterpretcast@gmail.com&gt;</pre>
</div>
</content>
</entry>
</feed>
