<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_ssa/src/mir/analyze.rs, branch automation/bors/try</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=automation/bors/try</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=automation/bors/try'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-10-02T06:55:50+00:00</updated>
<entry>
<title>mir-opt: Eliminate dead ref statements</title>
<updated>2025-10-02T06:55:50+00:00</updated>
<author>
<name>dianqk</name>
<email>dianqk@dianqk.net</email>
</author>
<published>2025-06-08T07:30:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=571412f8190089c36758031fe09fc0ece59be6b7'/>
<id>urn:sha1:571412f8190089c36758031fe09fc0ece59be6b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ProjectionElem::Subtype -&gt; CastKind::Subtype</title>
<updated>2025-09-26T08:25:26+00:00</updated>
<author>
<name>beepster4096</name>
<email>19316085+beepster4096@users.noreply.github.com</email>
</author>
<published>2025-09-26T03:54:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=aa5a21450a070fdea66a07d3cab3b69e6735c328'/>
<id>urn:sha1:aa5a21450a070fdea66a07d3cab3b69e6735c328</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #144347 - scottmcm:ssa-enums-v0, r=WaffleLapkin</title>
<updated>2025-07-27T06:37:55+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-07-27T06:37:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=86ef32029427cfc4161a3fd7a51992302f7c5552'/>
<id>urn:sha1:86ef32029427cfc4161a3fd7a51992302f7c5552</id>
<content type='text'>
No longer need `alloca`s for consuming `Result&lt;!, i32&gt;` and similar

In optimized builds GVN gets rid of these already, but in `opt-level=0` we actually make `alloca`s for this, which particularly impacts `?`-style things that use actually-only-one-variant types like this.

While doing so, rewrite `LocalAnalyzer::process_place` to be non-recursive, solving a 6+ year old FIXME.

r? codegen
</content>
</entry>
<entry>
<title>Remove `rvalue_creates_operand` entirely</title>
<updated>2025-07-23T15:40:27+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2025-07-23T15:40:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b7e025cfb64094d8672c752a9fffb12e9bc79567'/>
<id>urn:sha1:b7e025cfb64094d8672c752a9fffb12e9bc79567</id>
<content type='text'>
Split to a separate commit to it could be reverted later if necessary, should we get new `Rvalue`s where we can't handle it this way.

</content>
</entry>
<entry>
<title>No longer need `alloca`s for consuming `Result&lt;!, i32&gt;` and similar</title>
<updated>2025-07-23T07:09:36+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2025-07-23T06:23:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6a5c7e04156125cb8c1ff78eae95e6ff076f51ed'/>
<id>urn:sha1:6a5c7e04156125cb8c1ff78eae95e6ff076f51ed</id>
<content type='text'>
In optimized builds GVN gets rid of these already, but in `opt-level=0` we actually make `alloca`s for this, which particularly impacts `?`-style things that use actually-only-one-variant types like this.

</content>
</entry>
<entry>
<title>Let `rvalue_creates_operand` return true for *all* `Rvalue::Aggregate`s</title>
<updated>2025-07-08T06:08:10+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2025-07-05T06:16:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8cf2c71243f8c093e7728370e6653aa940dbaf22'/>
<id>urn:sha1:8cf2c71243f8c093e7728370e6653aa940dbaf22</id>
<content type='text'>
Inspired by &lt;https://github.com/rust-lang/rust/pull/138759#discussion_r2156375342&gt; where I noticed that we were nearly at this point, plus the comments I was writing in 143410 that reminded me a type-dependent `true` is fine.

This PR splits the `OperandRef::builder` logic out to a separate type, with the updates needed to handle SIMD as well.  In doing so, that makes the existing `Aggregate` path in `codegen_rvalue_operand` capable of handing SIMD values just fine.

As a result, we no longer need to do layout calculations for aggregate result types when running the analysis to determine which things can be SSA in codegen.

</content>
</entry>
<entry>
<title>Don't `alloca` just to look at a discriminant</title>
<updated>2025-03-12T07:56:43+00:00</updated>
<author>
<name>Scott McMurray</name>
<email>scottmcm@users.noreply.github.com</email>
</author>
<published>2025-03-12T07:38:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=143f39362aa3fe30e19de5d2a29bf6535e8f975f'/>
<id>urn:sha1:143f39362aa3fe30e19de5d2a29bf6535e8f975f</id>
<content type='text'>
Today we're making LLVM do a bunch of extra work for every enum you match on, even trivial stuff like `Option&lt;bool&gt;`.  Let's not.
</content>
</entry>
<entry>
<title>rename `BitSet` to `DenseBitSet`</title>
<updated>2025-01-11T11:34:01+00:00</updated>
<author>
<name>Rémy Rakic</name>
<email>remy.rakic+github@gmail.com</email>
</author>
<published>2025-01-07T15:19:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a13354bea05968799a5be5521691322274fa6a9e'/>
<id>urn:sha1:a13354bea05968799a5be5521691322274fa6a9e</id>
<content type='text'>
This should make it clearer that this bitset is dense, with the
advantages and disadvantages that it entails.
</content>
</entry>
<entry>
<title>Reformat using the new identifier sorting from rustfmt</title>
<updated>2024-09-22T23:11:29+00:00</updated>
<author>
<name>Michael Goulet</name>
<email>michael@errs.io</email>
</author>
<published>2024-09-22T23:05:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c682aa162b0d41e21cc6748f4fecfe01efb69d1f'/>
<id>urn:sha1:c682aa162b0d41e21cc6748f4fecfe01efb69d1f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Compute reachable locals as part of non_ssa_locals</title>
<updated>2024-09-21T05:07:00+00:00</updated>
<author>
<name>Ben Kimock</name>
<email>kimockb@gmail.com</email>
</author>
<published>2024-08-25T01:03:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=523f8f8398f84d13c7d38749de53b701ccfb4f50'/>
<id>urn:sha1:523f8f8398f84d13c7d38749de53b701ccfb4f50</id>
<content type='text'>
</content>
</entry>
</feed>
