<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp, branch 1.79.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.79.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.79.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2024-04-25T04:31:56+00:00</updated>
<entry>
<title>Auto merge of #121298 - nikic:writable, r=cuviper</title>
<updated>2024-04-25T04:31:56+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2024-04-25T04:31:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=284f94f9c0f77ad4ef85323a634cfda29c1a801d'/>
<id>urn:sha1:284f94f9c0f77ad4ef85323a634cfda29c1a801d</id>
<content type='text'>
Set writable and dead_on_unwind attributes for sret arguments

Set the `writable` and `dead_on_unwind` attributes for `sret` arguments. This allows call slot optimization to remove more memcpy's.

See https://llvm.org/docs/LangRef.html#parameter-attributes for the specification of these attributes. In short, the statement we're making here is that:

 * The return slot is writable.
 * The return slot will not be read if the function unwinds.

Fixes https://github.com/rust-lang/rust/issues/90595.
</content>
</entry>
<entry>
<title>Set writable and dead_on_unwind attributes for sret arguments</title>
<updated>2024-04-25T02:43:47+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-02-19T14:02:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3695af697efa26b0ea3b67739ade3ecc3929154e'/>
<id>urn:sha1:3695af697efa26b0ea3b67739ade3ecc3929154e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #124132 - RalfJung:OpBundlesIndirect, r=Mark-Simulacrum</title>
<updated>2024-04-20T20:45:37+00:00</updated>
<author>
<name>许杰友 Jieyou Xu (Joe)</name>
<email>39484203+jieyouxu@users.noreply.github.com</email>
</author>
<published>2024-04-20T20:45:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=726361caf463d1419e99b34d82df5d1656a583e4'/>
<id>urn:sha1:726361caf463d1419e99b34d82df5d1656a583e4</id>
<content type='text'>
llvm RustWrapper: explain OpBundlesIndirect argument type

Follow-up to https://github.com/rust-lang/rust/pull/123941

r? ``@Mark-Simulacrum``
</content>
</entry>
<entry>
<title>coverage. Lowering MC/DC statements to llvm-ir</title>
<updated>2024-04-19T16:34:40+00:00</updated>
<author>
<name>zhuyunxing</name>
<email>zhuyunxing.zyx@alibaba-inc.com</email>
</author>
<published>2024-04-19T02:58:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=439dbfa1ecb1b45db0acc728094d6e8ed3dc3080'/>
<id>urn:sha1:439dbfa1ecb1b45db0acc728094d6e8ed3dc3080</id>
<content type='text'>
</content>
</entry>
<entry>
<title>llvm RustWrapper: explain OpBundlesIndirect argument type</title>
<updated>2024-04-18T19:43:52+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-04-18T19:43:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=61def018c141964671c2a08180e234d46f188b0d'/>
<id>urn:sha1:61def018c141964671c2a08180e234d46f188b0d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix UB in LLVM FFI when passing zero or &gt;1 bundle</title>
<updated>2024-04-15T02:18:33+00:00</updated>
<author>
<name>Mark Rousskov</name>
<email>mark.simulacrum@gmail.com</email>
</author>
<published>2024-04-14T19:48:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bf3deccdadffbd5903268cca74a60f7101f7e9c3'/>
<id>urn:sha1:bf3deccdadffbd5903268cca74a60f7101f7e9c3</id>
<content type='text'>
Rust passes a *const &amp;OperandBundleDef to these APIs, usually from a
Vec&lt;&amp;OperandBundleDef&gt; or so. Previously we were dereferencing that
pointer and passing it to the ArrayRef constructor with some length (N).

This meant that if the length was 0, we were dereferencing a pointer to
nowhere, and if the length was &gt;1 then loading the *second* element
somewhere in LLVM would've been reading past the end.

Since Rust can't hold OperandBundleDef by-value we're forced to indirect
through a vector that copies out the OperandBundleDefs from the
by-reference list on the Rust side in order to match the LLVM expected
API.
</content>
</entry>
<entry>
<title>Rollup merge of #123612 - kxxt:riscv-target-abi, r=jieyouxu,nikic,DianQK</title>
<updated>2024-04-10T02:27:40+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2024-04-10T02:27:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2ddf984594519c62ee23f0289a1a0afebb90186b'/>
<id>urn:sha1:2ddf984594519c62ee23f0289a1a0afebb90186b</id>
<content type='text'>
Set target-abi module flag for RISC-V targets

Fixes cross-language LTO on RISC-V targets (Fixes #121924)
</content>
</entry>
<entry>
<title>Pass value and valueLen to create a StringRef</title>
<updated>2024-04-09T06:53:11+00:00</updated>
<author>
<name>Levi Zim</name>
<email>rsworktech@outlook.com</email>
</author>
<published>2024-04-09T06:47:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=33db20978e8157f53ca24fce1c54a7b5e07159cf'/>
<id>urn:sha1:33db20978e8157f53ca24fce1c54a7b5e07159cf</id>
<content type='text'>
Instead of creating a cstring.

Co-authored-by: LoveSy &lt;shana@zju.edu.cn&gt;
</content>
</entry>
<entry>
<title>Set target-abi module flag for RISC-V targets</title>
<updated>2024-04-09T03:25:51+00:00</updated>
<author>
<name>kxxt</name>
<email>rsworktech@outlook.com</email>
</author>
<published>2024-01-28T10:38:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f19c48e7a83ad146f461adfdf1b4288eabbecbc8'/>
<id>urn:sha1:f19c48e7a83ad146f461adfdf1b4288eabbecbc8</id>
<content type='text'>
Fixes cross-language LTO on RISC-V targets (Fixes #121924)
</content>
</entry>
<entry>
<title>Remove unnecessary cast from `LLVMRustGetInstrProfIncrementIntrinsic`</title>
<updated>2024-04-07T11:27:53+00:00</updated>
<author>
<name>Zalathar</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2024-04-07T11:14:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e38dfc49617086f31086f9d49275785d0ecc3d53'/>
<id>urn:sha1:e38dfc49617086f31086f9d49275785d0ecc3d53</id>
<content type='text'>
This particular cast appears to have been copied over from clang, but there are
plenty of other call sites in clang that don't bother with a cast here, and it
works fine without one.

For context, `llvm::Intrinsic::ID` is a typedef for `unsigned`, and
`llvm::Intrinsic::instrprof_increment` is a member of
`enum IndependentIntrinsics : unsigned`.
</content>
</entry>
</feed>
