<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/test/codegen/c-variadic.rs, branch perf-tmp</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=perf-tmp</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=perf-tmp'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2023-01-11T09:32:08+00:00</updated>
<entry>
<title>Move /src/test to /tests</title>
<updated>2023-01-11T09:32:08+00:00</updated>
<author>
<name>Albert Larsan</name>
<email>74931857+albertlarsan68@users.noreply.github.com</email>
</author>
<published>2023-01-05T08:13:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cf2dff2b1e3fa55fa5415d524200070d0d7aacfe'/>
<id>urn:sha1:cf2dff2b1e3fa55fa5415d524200070d0d7aacfe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update some codegen tests for opaque pointers</title>
<updated>2022-05-25T15:29:37+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-02-21T10:21:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4d7ff4e5096625b56f154fa485a1af9351c41b5c'/>
<id>urn:sha1:4d7ff4e5096625b56f154fa485a1af9351c41b5c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rustc: Fill out remaining parts of C-unwind ABI</title>
<updated>2021-08-03T14:06:19+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2021-06-08T18:23:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1c07096a45a15de64216f12ec726333870e372b1'/>
<id>urn:sha1:1c07096a45a15de64216f12ec726333870e372b1</id>
<content type='text'>
This commit intends to fill out some of the remaining pieces of the
C-unwind ABI. This has a number of other changes with it though to move
this design space forward a bit. Notably contained within here is:

* On `panic=unwind`, the `extern "C"` ABI is now considered as "may
  unwind". This fixes a longstanding soundness issue where if you
  `panic!()` in an `extern "C"` function defined in Rust that's actually
  UB because the LLVM representation for the function has the `nounwind`
  attribute, but then you unwind.

* Whether or not a function unwinds now mainly considers the ABI of the
  function instead of first checking the panic strategy. This fixes a
  miscompile of `extern "C-unwind"` with `panic=abort` because that ABI
  can still unwind.

* The aborting stub for non-unwinding ABIs with `panic=unwind` has been
  reimplemented. Previously this was done as a small tweak during MIR
  generation, but this has been moved to a separate and dedicated MIR
  pass. This new pass will, for appropriate functions and function
  calls, insert a `cleanup` landing pad for any function call that may
  unwind within a function that is itself not allowed to unwind. Note
  that this subtly changes some behavior from before where previously on
  an unwind which was caught-to-abort it would run active destructors in
  the function, and now it simply immediately aborts the process.

* The `#[unwind]` attribute has been removed and all users in tests and
  such are now using `C-unwind` and `#![feature(c_unwind)]`.

I think this is largely the last piece of the RFC to implement.
Unfortunately I believe this is still not stabilizable as-is because
activating the feature gate changes the behavior of the existing `extern
"C"` ABI in a way that has no replacement. My thinking for how to enable
this is that we add support for the `C-unwind` ABI on stable Rust first,
and then after it hits stable we change the behavior of the `C` ABI.
That way anyone straddling stable/beta/nightly can switch to `C-unwind`
safely.
</content>
</entry>
<entry>
<title>Remove redundant `ignore-tidy-linelength` annotations</title>
<updated>2021-04-03T20:30:20+00:00</updated>
<author>
<name>Simon Jakobi</name>
<email>simon.jakobi@gmail.com</email>
</author>
<published>2021-04-03T11:05:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3ea62cb5d19846b44172d861ae231c8c09322800'/>
<id>urn:sha1:3ea62cb5d19846b44172d861ae231c8c09322800</id>
<content type='text'>
This is step 2 towards fixing #77548.

In the codegen and codegen-units test suites, the `//` comment markers
were kept in order not to affect any source locations. This is because
these tests cannot be automatically `--bless`ed.
</content>
</entry>
<entry>
<title>Use `call` instead of `invoke` for functions that cannot unwind</title>
<updated>2020-04-15T09:45:21+00:00</updated>
<author>
<name>Wesley Wiser</name>
<email>wwiser@gmail.com</email>
</author>
<published>2020-03-26T09:32:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8da26e036630352a21a9ddc14bf53ad31e9b9ba0'/>
<id>urn:sha1:8da26e036630352a21a9ddc14bf53ad31e9b9ba0</id>
<content type='text'>
The `FnAbi` now knows if the function is allowed to unwind. If a
function isn't allowed to unwind, we can use a `call` instead of an
`invoke`.

This resolves an issue when calling LLVM intrinsics which cannot unwind
LLVM will generate an error if you attempt to invoke them so we need to
ignore cleanup blocks in codegen and generate a call instead.
</content>
</entry>
<entry>
<title>Re-enable Emscripten's exception handling support</title>
<updated>2019-10-25T22:16:36+00:00</updated>
<author>
<name>Thomas Lively</name>
<email>tlively@google.com</email>
</author>
<published>2019-10-18T21:47:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=62c3443e9659be2bf0ae53df1421c846ceaca904'/>
<id>urn:sha1:62c3443e9659be2bf0ae53df1421c846ceaca904</id>
<content type='text'>
Passes LLVM codegen and Emscripten link-time flags for exception
handling if and only if the panic strategy is `unwind`. Sets the
default panic strategy for Emscripten targets to `unwind`. Re-enables
tests that depend on unwinding support for Emscripten, including
`should_panic` tests.
</content>
</entry>
<entry>
<title>Upgrade Emscripten targets to use upstream LLVM backend</title>
<updated>2019-10-17T00:06:48+00:00</updated>
<author>
<name>Thomas Lively</name>
<email>tlively@google.com</email>
</author>
<published>2019-08-17T05:08:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2bf59bea481dd4b4365cafe2e94fa8bf330a6877'/>
<id>urn:sha1:2bf59bea481dd4b4365cafe2e94fa8bf330a6877</id>
<content type='text'>
 - Compatible with Emscripten 1.38.46-upstream or later upstream.
 - Refactors the Emscripten target spec to share code with other wasm
   targets.
 - Replaces the old incorrect wasm32 C call ABI with the correct one,
   preserving the old one as wasm32_bindgen_compat for wasm-bindgen
   compatibility.
 - Updates the varargs ABI used by Emscripten and deletes the old one.
 - Removes the obsolete wasm32-experimental-emscripten target.
 - Uses EMCC_CFLAGS on CI to avoid the timeout problems with #63649.
</content>
</entry>
<entry>
<title>Revert "Auto merge of #63649 - tlively:emscripten-upstream-upgrade, r=alexcrichton"</title>
<updated>2019-10-06T04:38:45+00:00</updated>
<author>
<name>Tyler Mandry</name>
<email>tmandry@gmail.com</email>
</author>
<published>2019-10-06T04:38:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d16b7f705bd7c266a924e43a31495477dc4c9321'/>
<id>urn:sha1:d16b7f705bd7c266a924e43a31495477dc4c9321</id>
<content type='text'>
This reverts commit 7870050796e5904a0fc85ecbe6fa6dde1cfe0c91, reversing
changes made to 2e7244807a7878f6eca3eb7d97ae9b413aa49014.
</content>
</entry>
<entry>
<title>Fix ABI, run and fix more tests, re-enable CI for PRs</title>
<updated>2019-10-04T07:47:21+00:00</updated>
<author>
<name>Thomas Lively</name>
<email>tlively@google.com</email>
</author>
<published>2019-10-02T18:02:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5b56c660c9cf55b240d26854fa0ffd41db068ff9'/>
<id>urn:sha1:5b56c660c9cf55b240d26854fa0ffd41db068ff9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test/c-variadic: Fix patterns on powerpc64</title>
<updated>2019-09-10T02:05:52+00:00</updated>
<author>
<name>Samuel Holland</name>
<email>samuel@sholland.org</email>
</author>
<published>2019-09-03T03:09:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2f6e73cb07edc21b1243b270e3e77faf51fcb4e4'/>
<id>urn:sha1:2f6e73cb07edc21b1243b270e3e77faf51fcb4e4</id>
<content type='text'>
On architectures such as powerpc64 that use extend_integer_width_to in
their C ABI processing, integer parameters shorter than the native
register width will be annotated with the ArgAttribute::SExt or
ArgAttribute::ZExt attribute, and that attribute will be included in the
generated LLVM IR.

In this test, all relevant parameters are `i32`, which will get the
`signext` annotation on the relevant 64-bit architectures. Match both
the annotated and non-annotated case, but enforce that the annotation is
applied consistently.
</content>
</entry>
</feed>
