<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_llvm/src/debuginfo/metadata, branch try</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=try</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=try'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-06-04T06:42:21+00:00</updated>
<entry>
<title>Change `tag_field` to `FieldIdx` in `Variants::Multiple`</title>
<updated>2025-06-04T06:42:21+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2025-06-04T06:42:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ee9901e65c78f70b93dab5bd1e04bd77273b7c40'/>
<id>urn:sha1:ee9901e65c78f70b93dab5bd1e04bd77273b7c40</id>
<content type='text'>
It was already available as a generic parameter anyway, and it's not like we'll ever put a tag in the 5-billionth field.

</content>
</entry>
<entry>
<title>AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added.</title>
<updated>2025-04-28T09:23:13+00:00</updated>
<author>
<name>Andrew Zhogin</name>
<email>andrew.zhogin@gmail.com</email>
</author>
<published>2024-08-26T13:45:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c366756a8537ef998d32c1ef57098d5aae7ca92f'/>
<id>urn:sha1:c366756a8537ef998d32c1ef57098d5aae7ca92f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #138599 - adwinwhite:recursive-overflow, r=wesleywiser</title>
<updated>2025-04-18T03:17:53+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>476013+matthiaskrgr@users.noreply.github.com</email>
</author>
<published>2025-04-18T03:17:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=68b439c63bccf8498781159eb5d4b687930d1da6'/>
<id>urn:sha1:68b439c63bccf8498781159eb5d4b687930d1da6</id>
<content type='text'>
avoid overflow when generating debuginfo for expanding recursive types

Fixes #135093
Fixes #121538
Fixes #107362
Fixes #100618
Fixes #115994

The overflow happens because expanding recursive types keep creating new nested types when recurring into sub fields.
I fixed that by returning an empty stub node when expanding recursion is detected.
</content>
</entry>
<entry>
<title>Revert "Deduplicate template parameter creation"</title>
<updated>2025-04-15T18:00:11+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-04-15T18:00:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=38f7060a73acd5ec6ed7d4820dccbf2aa584fc68'/>
<id>urn:sha1:38f7060a73acd5ec6ed7d4820dccbf2aa584fc68</id>
<content type='text'>
This reverts commit 6adc2c1fd6ecde7bf83c8b8fbc71f402ced87054.
</content>
</entry>
<entry>
<title>Create a safe wrapper around `LLVMRustDIBuilderCreateMemberType`</title>
<updated>2025-03-18T17:15:02+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>github333195615777966@oli-obk.de</email>
</author>
<published>2025-03-17T17:00:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f4b09848546de52e2a8bbf983fe995f8c5631f6b'/>
<id>urn:sha1:f4b09848546de52e2a8bbf983fe995f8c5631f6b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid splitting up a layout</title>
<updated>2025-03-18T17:01:09+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>github333195615777966@oli-obk.de</email>
</author>
<published>2025-03-18T16:44:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1f34b19596ad598d2f01cf12b586971bf3c3cf52'/>
<id>urn:sha1:1f34b19596ad598d2f01cf12b586971bf3c3cf52</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Deduplicate template parameter creation</title>
<updated>2025-03-17T16:32:21+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>github333195615777966@oli-obk.de</email>
</author>
<published>2025-03-17T16:23:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6adc2c1fd6ecde7bf83c8b8fbc71f402ced87054'/>
<id>urn:sha1:6adc2c1fd6ecde7bf83c8b8fbc71f402ced87054</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Immediately create an `Option` instead of reallocating for it later</title>
<updated>2025-03-17T16:17:48+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>github333195615777966@oli-obk.de</email>
</author>
<published>2025-03-17T16:06:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b4acf7a51eca60082398841b6d3d8b2997802767'/>
<id>urn:sha1:b4acf7a51eca60082398841b6d3d8b2997802767</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(debuginfo): avoid overflow when handling expanding recursive type</title>
<updated>2025-03-17T10:33:40+00:00</updated>
<author>
<name>Adwin White</name>
<email>adwinw01@gmail.com</email>
</author>
<published>2025-03-17T10:17:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8e235258f38e43c4b565c5393d96aa5381d366bf'/>
<id>urn:sha1:8e235258f38e43c4b565c5393d96aa5381d366bf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>debuginfo: Set bitwidth appropriately in enum variant tags</title>
<updated>2025-02-12T18:01:42+00:00</updated>
<author>
<name>Matthew Maurer</name>
<email>mmaurer@google.com</email>
</author>
<published>2025-02-12T00:37:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d82219a4fa06bfa47fc5aac64844c461905ae77d'/>
<id>urn:sha1:d82219a4fa06bfa47fc5aac64844c461905ae77d</id>
<content type='text'>
Previously, we unconditionally set the bitwidth to 128-bits, the largest
an discrimnator would possibly be. Then, LLVM would cut down the constant by
chopping off leading zeroes before emitting the DWARF. LLVM only
supported 64-bit descriminators, so this would also have occasionally
resulted in truncated data (or an assert) if more than 64-bits were
used.

LLVM added support for 128-bit enumerators in llvm/llvm-project#125578

That patchset also trusts the constant to describe how wide the variant tag is.
As a result, we went from emitting tags that looked like:
DW_AT_discr_value     (0xfe)

(`form1`)

to emitting tags that looked like:
DW_AT_discr_value	(&lt;0x10&gt; fe ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 )

This makes the `DW_AT_discr_value` encode at the bitwidth of the tag,
which:
1. Is probably closer to our intentions in terms of describing the data.
2. Doesn't invoke the 128-bit support which may not be supported by all
   debuggers / downstream tools.
3. Will result in smaller debug information.
</content>
</entry>
</feed>
