<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_llvm/src/allocator.rs, branch 1.64.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.64.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.64.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2022-07-13T22:47:06+00:00</updated>
<entry>
<title>Rename `debugging_opts` to `unstable_opts`</title>
<updated>2022-07-13T22:47:06+00:00</updated>
<author>
<name>Joshua Nelson</name>
<email>jnelson@cloudflare.com</email>
</author>
<published>2022-07-06T12:44:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3c9765cff18a3c4ba2962ea59d4c3f6966f9700c'/>
<id>urn:sha1:3c9765cff18a3c4ba2962ea59d4c3f6966f9700c</id>
<content type='text'>
This is no longer used only for debugging options (e.g. `-Zoutput-width`, `-Zallow-features`).
Rename it to be more clear.
</content>
</entry>
<entry>
<title>Auto merge of #88098 - Amanieu:oom_panic, r=nagisa</title>
<updated>2022-03-18T03:01:46+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2022-03-18T03:01:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d6f3a4ecb48ead838638e902f2fa4e5f3059779b'/>
<id>urn:sha1:d6f3a4ecb48ead838638e902f2fa4e5f3059779b</id>
<content type='text'>
Implement -Z oom=panic

This PR removes the `#[rustc_allocator_nounwind]` attribute on `alloc_error_handler` which allows it to unwind with a panic instead of always aborting. This is then used to implement `-Z oom=panic` as per RFC 2116 (tracking issue #43596).

Perf and binary size tests show negligible impact.
</content>
</entry>
<entry>
<title>debuginfo: Refactor debuginfo generation for types</title>
<updated>2022-03-14T15:49:06+00:00</updated>
<author>
<name>Michael Woerister</name>
<email>michaelwoerister@posteo</email>
</author>
<published>2022-03-03T10:15:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=07ebc13d87796622bb6e4ac46a7e6a054bc4c680'/>
<id>urn:sha1:07ebc13d87796622bb6e4ac46a7e6a054bc4c680</id>
<content type='text'>
This commit
- changes names to use di_node instead of metadata
- uniformly names all functions that build new debuginfo nodes build_xyz_di_node
- renames CrateDebugContext to CodegenUnitDebugContext (which is more accurate)
- moves TypeMap and functions that work directly work with it to a new type_map module
- moves and reimplements enum related builder functions to a new enums module
- splits enum debuginfo building for the native and cpp-like cases, since they are mostly separate
- uses SmallVec instead of Vec in many places
- removes the old infrastructure for dealing with recursion cycles (create_and_register_recursive_type_forward_declaration(), RecursiveTypeDescription, set_members_of_composite_type(), MemberDescription, MemberDescriptionFactory, prepare_xyz_metadata(), etc)
- adds type_map::build_type_with_children() as a replacement for dealing with recursion cycles
- adds many (doc-)comments explaining what's going on
- changes cpp-like naming for C-Style enums so they don't get a enum$&lt;...&gt; name (because the NatVis visualizer does not apply to them)
- fixes detection of what is a C-style enum because some enums where classified as C-style even though they have fields
- changes the position of discriminant debuginfo node so it is consistently nested inside the top-level union instead of, sometimes, next to it
</content>
</entry>
<entry>
<title>Add -Z oom={panic,abort} command-line option</title>
<updated>2022-03-03T12:58:38+00:00</updated>
<author>
<name>Amanieu d'Antras</name>
<email>amanieu@gmail.com</email>
</author>
<published>2021-10-06T14:52:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=aa36237e1604de6a2a6275f5580c9d680d627c2f'/>
<id>urn:sha1:aa36237e1604de6a2a6275f5580c9d680d627c2f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add LLVM attributes in batches instead of individually</title>
<updated>2022-02-26T18:14:55+00:00</updated>
<author>
<name>Erik Desjardins</name>
<email>erikdesjardins@users.noreply.github.com</email>
</author>
<published>2022-02-21T16:19:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=30d3ce06742fc5d0eb844239652a0af4d47bb095'/>
<id>urn:sha1:30d3ce06742fc5d0eb844239652a0af4d47bb095</id>
<content type='text'>
This should improve performance.
</content>
</entry>
<entry>
<title>llvm: migrate to new parameter-bearing uwtable attr</title>
<updated>2022-02-14T21:09:53+00:00</updated>
<author>
<name>Augie Fackler</name>
<email>augie@google.com</email>
</author>
<published>2022-02-14T19:01:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0958c8f4cad247204ed7d9f9723f273ef81074f1'/>
<id>urn:sha1:0958c8f4cad247204ed7d9f9723f273ef81074f1</id>
<content type='text'>
In https://reviews.llvm.org/D114543 the uwtable attribute gained a flag
so that we can ask for sync uwtables instead of async, as the former are
much cheaper. The default is async, so that's what I've done here, but I
left a TODO that we might be able to do better.

While in here I went ahead and dropped support for removing uwtable
attributes in rustc: we never did it, so I didn't write the extra C++
bridge code to make it work. Maybe I should have done the same thing
with the `sync|async` parameter but we'll see.
</content>
</entry>
<entry>
<title>Include debug info for the allocator shim</title>
<updated>2021-08-31T22:24:20+00:00</updated>
<author>
<name>Daniel Paoliello</name>
<email>danpao@microsoft.com</email>
</author>
<published>2021-08-31T18:16:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=77a96ed5646f7c3ee8897693decc4626fe380643'/>
<id>urn:sha1:77a96ed5646f7c3ee8897693decc4626fe380643</id>
<content type='text'>
Issue Details:
In some cases it is necessary to generate an "allocator shim" to forward various Rust allocation functions (e.g., `__rust_alloc`) to an underlying function (e.g., `malloc`). However, since this allocator shim is a manually created LLVM module it is not processed via the normal module processing code and so no debug info is generated for it (if debugging info is enabled).

Fix Details:
* Modify the `debuginfo` code to allow creating debug info for a module without a `CodegenCx` (since it is difficult, and expensive, to create one just to emit some debug info).
* After creating the allocator shim add in basic debug info.
</content>
</entry>
<entry>
<title>Prepare call/invoke for opaque pointers</title>
<updated>2021-08-05T17:58:55+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2021-08-03T22:09:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=183d79cc09ad81bc2dc7b47cb8880046201e52a2'/>
<id>urn:sha1:183d79cc09ad81bc2dc7b47cb8880046201e52a2</id>
<content type='text'>
Rather than relying on `getPointerElementType()` from LLVM function
pointers, we now pass the function type explicitly when building `call`
or `invoke` instructions.
</content>
</entry>
<entry>
<title>Remove redundant to_string calls</title>
<updated>2021-02-17T10:25:55+00:00</updated>
<author>
<name>est31</name>
<email>MTest31@outlook.com</email>
</author>
<published>2021-02-17T09:46:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=003670748f88d22e19b449db4e24b35739b9e984'/>
<id>urn:sha1:003670748f88d22e19b449db4e24b35739b9e984</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Collapse all uses of `target.options.foo` into `target.foo`</title>
<updated>2020-11-08T14:29:13+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2020-11-08T11:27:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bf66988aa1677d018928c271fed563792f921d28'/>
<id>urn:sha1:bf66988aa1677d018928c271fed563792f921d28</id>
<content type='text'>
with an eye on merging `TargetOptions` into `Target`.

`TargetOptions` as a separate structure is mostly an implementation detail of `Target` construction, all its fields logically belong to `Target` and available from `Target` through `Deref` impls.
</content>
</entry>
</feed>
