<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/test/codegen/scalar-pair-bool.rs, branch 1.62.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.62.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.62.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2022-02-05T06:09:52+00:00</updated>
<entry>
<title>Apply noundef attribute to &amp;T, &amp;mut T, Box&lt;T&gt;, bool</title>
<updated>2022-02-05T06:09:52+00:00</updated>
<author>
<name>Erik Desjardins</name>
<email>erikdesjardins@users.noreply.github.com</email>
</author>
<published>2022-02-05T06:00:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8cb0b6ca5bf1321d38f4602113b0f41c837d0586'/>
<id>urn:sha1:8cb0b6ca5bf1321d38f4602113b0f41c837d0586</id>
<content type='text'>
This doesn't handle `char` because it's a bit awkward to distinguish it
from u32 at this point in codegen.

Note that for some types (like `&amp;Struct` and `&amp;mut Struct`),
we already apply `dereferenceable`, which implies `noundef`,
so the IR does not change.
</content>
</entry>
<entry>
<title>Manually set dso_local when its valid to do so</title>
<updated>2021-04-02T21:00:29+00:00</updated>
<author>
<name>Simonas Kazlauskas</name>
<email>git@kazlauskas.me</email>
</author>
<published>2021-03-27T22:11:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2f000a78bf615b35c4837f920fb6adcad4848351'/>
<id>urn:sha1:2f000a78bf615b35c4837f920fb6adcad4848351</id>
<content type='text'>
This should have no real effect in most cases, as e.g. `hidden`
visibility already implies `dso_local` (or at least LLVM IR does not
preserve the `dso_local` setting if the item is already `hidden`), but
it should fix `-Crelocation-model=static` and improve codegen in
executables.

Note that this PR does not exhaustively port the logic in [clang]. Only
the obviously correct portion and what is necessary to fix a regression
from LLVM 12 that relates to `-Crelocation_model=static`.

Fixes #83335

[clang]: https://github.com/llvm/llvm-project/blob/3001d080c813da20b329303bf8f45451480e5905/clang/lib/CodeGen/CodeGenModule.cpp#L945-L1039
</content>
</entry>
<entry>
<title>Match scalar-pair-bool more flexibly for LLVM 11</title>
<updated>2020-08-22T20:44:54+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2020-08-18T22:11:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=fb05be00df385ed216fcb9f6712206ec64fed72e'/>
<id>urn:sha1:fb05be00df385ed216fcb9f6712206ec64fed72e</id>
<content type='text'>
LLVM 11 started using `phi` and `select` for `fn pair_i32_bool`, which
is still valid, but harder to match than the simple instructions we were
getting before. We'll just check that the unpacked args are directly
referenced in any way, and call it good.
</content>
</entry>
<entry>
<title>codegen: use "_N" (like for other locals) instead of "argN", for argument names.</title>
<updated>2019-09-13T16:25:05+00:00</updated>
<author>
<name>Eduard-Mihai Burtescu</name>
<email>edy.burt@gmail.com</email>
</author>
<published>2019-09-13T16:25:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bdad2c52a538206a2f1c154bb5d5c3d7cb6b5d6f'/>
<id>urn:sha1:bdad2c52a538206a2f1c154bb5d5c3d7cb6b5d6f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove licenses</title>
<updated>2018-12-26T04:08:33+00:00</updated>
<author>
<name>Mark Rousskov</name>
<email>mark.simulacrum@gmail.com</email>
</author>
<published>2018-12-25T15:56:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2a663555ddf36f6b041445894a8c175cd1bc718c'/>
<id>urn:sha1:2a663555ddf36f6b041445894a8c175cd1bc718c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update scalar pairs per review comments</title>
<updated>2018-07-05T21:22:09+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2018-07-05T21:22:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=557736befc84fb72066128a8c42efe6e4e63a3b1'/>
<id>urn:sha1:557736befc84fb72066128a8c42efe6e4e63a3b1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Store scalar pair bools as i8 in memory</title>
<updated>2018-07-05T16:59:52+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2018-06-15T22:47:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e5789765606baebd983bd9b1c870cb8b57a0627b'/>
<id>urn:sha1:e5789765606baebd983bd9b1c870cb8b57a0627b</id>
<content type='text'>
We represent `bool` as `i1` in a `ScalarPair`, unlike other aggregates,
to optimize IR for checked operators and the like.  With this patch, we
still do so when the pair is an immediate value, but we use the `i8`
memory type when the value is loaded or stored as an LLVM aggregate.

So `(bool, bool)` looks like an `{ i1, i1 }` immediate, but `{ i8, i8 }`
in memory.  When a pair is a direct function argument, `PassMode::Pair`,
it is still passed using the immediate `i1` type, but as a return value
it will use the `i8` memory type.  Also, `bool`-like` enum tags will now
use scalar pairs when possible, where they were previously excluded due
to optimization issues.
</content>
</entry>
</feed>
