<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_ssa/src, branch stable</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=stable</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=stable'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-07-31T15:19:40+00:00</updated>
<entry>
<title>Rollup merge of #144726 - jdonszelmann:move-attr-data-structures, r=lcnr</title>
<updated>2025-07-31T15:19:40+00:00</updated>
<author>
<name>Jana Dönszelmann</name>
<email>jonathan@donsz.nl</email>
</author>
<published>2025-07-31T15:19:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=26c28ee2ef1402f59cadf03417b05cdb892e7940'/>
<id>urn:sha1:26c28ee2ef1402f59cadf03417b05cdb892e7940</id>
<content type='text'>
merge rustc_attr_data_structures into rustc_hir

this move was discussed on zulip: [#t-compiler &gt; attribute parsing rework @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/attribute.20parsing.20rework/near/528530091)

Many PRs in the attribute rework depend on this move.
</content>
</entry>
<entry>
<title>remove rustc_attr_data_structures</title>
<updated>2025-07-31T12:19:27+00:00</updated>
<author>
<name>Jana Dönszelmann</name>
<email>jana@donsz.nl</email>
</author>
<published>2025-07-31T09:00:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e1d3ad89c7a2ad4f5d944a7fee1298ffe8c99645'/>
<id>urn:sha1:e1d3ad89c7a2ad4f5d944a7fee1298ffe8c99645</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #136840 - Flakebi:linker-plugin-lto-fat, r=dianqk</title>
<updated>2025-07-31T11:12:45+00:00</updated>
<author>
<name>Samuel Tardieu</name>
<email>sam@rfc1149.net</email>
</author>
<published>2025-07-31T11:12:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d8c09c10e5e86559cd49e1081482d2b700ba5ccf'/>
<id>urn:sha1:d8c09c10e5e86559cd49e1081482d2b700ba5ccf</id>
<content type='text'>
Fix linker-plugin-lto only doing thin lto

When rust provides LLVM bitcode files to lld and the bitcode contains
function summaries as used for thin lto, lld defaults to using thin lto.
This prevents some optimizations that are only applied for fat lto.

We solve this by not creating function summaries when fat lto is
enabled. The bitcode for the module is just directly written out.

An alternative solution would be to set the `ThinLTO=0` module flag to
signal lld to do fat lto.
The code in clang that sets this flag is here:
https://github.com/llvm/llvm-project/blob/560149b5e3c891c64899e9912e29467a69dc3a4c/clang/lib/CodeGen/BackendUtil.cpp#L1150
The code in LLVM that queries the flag and defaults to thin lto if not
set is here:
https://github.com/llvm/llvm-project/blob/e258bca9505f35e0a22cb213a305eea9b76d11ea/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp#L4441-L4446

try-job: x86_64-gnu-debug
try-job: aarch64-gnu-debug
</content>
</entry>
<entry>
<title>Fix linker-plugin-lto only doing thin lto</title>
<updated>2025-07-31T08:38:34+00:00</updated>
<author>
<name>Flakebi</name>
<email>flakebi@t-online.de</email>
</author>
<published>2025-03-28T09:15:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7a127fba657ed627cc4877f2871abaf7d9819caa'/>
<id>urn:sha1:7a127fba657ed627cc4877f2871abaf7d9819caa</id>
<content type='text'>
When rust provides LLVM bitcode files to lld and the bitcode contains
function summaries as used for thin lto, lld defaults to using thin lto.
This prevents some optimizations that are only applied for fat lto.

We solve this by not creating function summaries when fat lto is
enabled. The bitcode for the module is just directly written out.

An alternative solution would be to set the `ThinLTO=0` module flag to
signal lld to do fat lto.
The code in clang that sets this flag is here:
https://github.com/llvm/llvm-project/blob/560149b5e3c891c64899e9912e29467a69dc3a4c/clang/lib/CodeGen/BackendUtil.cpp#L1150
The code in LLVM that queries the flag and defaults to thin lto if not
set is here:
https://github.com/llvm/llvm-project/blob/e258bca9505f35e0a22cb213a305eea9b76d11ea/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp#L4441-L4446
</content>
</entry>
<entry>
<title>Rollup merge of #144685 - jdonszelmann:lang-items-once, r=wafflelapkin</title>
<updated>2025-07-31T05:42:01+00:00</updated>
<author>
<name>Stuart Cook</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2025-07-31T05:42:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=45169cbf38ed1ad68b2df83a53ff3f71ca815590'/>
<id>urn:sha1:45169cbf38ed1ad68b2df83a53ff3f71ca815590</id>
<content type='text'>
Only extract lang items once in codegen_fn_attrs

This one should be obvious. These two extraction points used to be far apart but now that they're refactored to be close it was rather obvious we're just doing double work....

r? ``@WaffleLapkin``

Buils on rust-lang/rust#144655
</content>
</entry>
<entry>
<title>Rollup merge of #144232 - xacrimon:explicit-tail-call, r=WaffleLapkin</title>
<updated>2025-07-31T05:42:00+00:00</updated>
<author>
<name>Stuart Cook</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2025-07-31T05:42:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8628b78f24c01026d01b82afd3ec91a2019fe647'/>
<id>urn:sha1:8628b78f24c01026d01b82afd3ec91a2019fe647</id>
<content type='text'>
Implement support for `become` and explicit tail call codegen for the LLVM backend

This PR implements codegen of explicit tail calls via `become` in `rustc_codegen_ssa` and support within the LLVM backend. Completes a task on (https://github.com/rust-lang/rust/issues/112788). This PR implements all the necessary bits to make explicit tail calls usable, other backends have received stubs for now and will ICE if you use `become` on them. I suspect there is some bikeshedding to be done on how we should go about implementing this for other backends, but it should be relatively straightforward for GCC after this is merged.

During development I also put together a POC bytecode VM based on tail call dispatch to test these changes out and analyze the codegen to make sure it generates expected assembly. That is available [here](https://github.com/xacrimon/tcvm).
</content>
</entry>
<entry>
<title>only extract lang items once</title>
<updated>2025-07-30T14:44:16+00:00</updated>
<author>
<name>Jana Dönszelmann</name>
<email>jana@donsz.nl</email>
</author>
<published>2025-07-30T14:38:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3fe0e2435665f857c11acbbd91a063f5a3c8d79d'/>
<id>urn:sha1:3fe0e2435665f857c11acbbd91a063f5a3c8d79d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>clean up codegen fn attrs</title>
<updated>2025-07-30T14:39:16+00:00</updated>
<author>
<name>Jana Dönszelmann</name>
<email>jana@donsz.nl</email>
</author>
<published>2025-07-29T21:55:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1d589c87bef43ea685927fc97d3c8b8fff725184'/>
<id>urn:sha1:1d589c87bef43ea685927fc97d3c8b8fff725184</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename impl_of_method -&gt; impl_of_assoc</title>
<updated>2025-07-28T14:54:53+00:00</updated>
<author>
<name>Cameron Steffen</name>
<email>cam.steffen94@gmail.com</email>
</author>
<published>2025-07-25T00:09:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b43164cef643957f9e1cd20dffdbb736f3f3c298'/>
<id>urn:sha1:b43164cef643957f9e1cd20dffdbb736f3f3c298</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #144562 - matthiaskrgr:rollup-mlvn7qo, r=matthiaskrgr</title>
<updated>2025-07-28T08:50:59+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-07-28T08:50:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=65b6cdb6a6d33987b9d642a4882283c71fbe3957'/>
<id>urn:sha1:65b6cdb6a6d33987b9d642a4882283c71fbe3957</id>
<content type='text'>
Rollup of 7 pull requests

Successful merges:

 - rust-lang/rust#144072 (update `Atomic*::from_ptr` and `Atomic*::as_ptr` docs)
 - rust-lang/rust#144151 (`tests/ui/issues/`: The Issues Strike Back [1/N])
 - rust-lang/rust#144300 (Clippy fixes for miropt-test-tools)
 - rust-lang/rust#144399 (Add a ratchet for moving all standard library tests to separate packages)
 - rust-lang/rust#144472 (str: Mark unstable `round_char_boundary` feature functions as const)
 - rust-lang/rust#144503 (Various refactors to the codegen coordinator code (part 3))
 - rust-lang/rust#144530 (coverage: Infer `instances_used` from `pgo_func_name_var_map`)

r? `@ghost`
`@rustbot` modify labels: rollup
</content>
</entry>
</feed>
