<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_llvm/src/debuginfo, 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-20T21:12:07+00:00</updated>
<entry>
<title>consistently use VTable over Vtable (matching stable stdlib API RawWakerVTable)</title>
<updated>2022-07-20T21:12:07+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2022-07-19T23:57:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3dad266f4018a8356b8259012d09088520735b13'/>
<id>urn:sha1:3dad266f4018a8356b8259012d09088520735b13</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&amp;str-conversions, r=nnethercote</title>
<updated>2022-07-19T11:30:46+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2022-07-19T11:30:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4815f94c51d9c4a9c43fcc77da0c788056f9cf9e'/>
<id>urn:sha1:4815f94c51d9c4a9c43fcc77da0c788056f9cf9e</id>
<content type='text'>
Avoid `Symbol` to `&amp;str` conversions

`Symbol::as_str` is a slowish operation, so this patch removes some usages of it.
</content>
</entry>
<entry>
<title>avoid `Symbol` to `&amp;str` conversions</title>
<updated>2022-07-18T05:25:34+00:00</updated>
<author>
<name>Takayuki Maeda</name>
<email>takoyaki0316@gmail.com</email>
</author>
<published>2022-07-18T05:25:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a22934bea1d02870cda58eb6297ff9332fcc2104'/>
<id>urn:sha1:a22934bea1d02870cda58eb6297ff9332fcc2104</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix dwarf debuginfo being used in addition to CodeView on windows</title>
<updated>2022-07-14T18:41:55+00:00</updated>
<author>
<name>Rémy Rakic</name>
<email>remy.rakic+github@gmail.com</email>
</author>
<published>2022-07-14T18:41:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=97510f212852d4733c4c6ffafcaa7e488c5fcb19'/>
<id>urn:sha1:97510f212852d4733c4c6ffafcaa7e488c5fcb19</id>
<content type='text'>
Fixes the debuginfo size increase regression introduced by the DWARF5 support.
</content>
</entry>
<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>Implement support for DWARF version 5.</title>
<updated>2022-07-08T18:31:08+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@fb.com</email>
</author>
<published>2022-06-20T23:26:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1e0ad0c1d4fdca7a37221e05fd5e39739d9084f5'/>
<id>urn:sha1:1e0ad0c1d4fdca7a37221e05fd5e39739d9084f5</id>
<content type='text'>
DWARF version 5 brings a number of improvements over version 4. Quoting from
the announcement [1]:

&gt; Version 5 incorporates improvements in many areas: better data compression,
&gt; separation of debugging data from executable files, improved description of
&gt; macros and source files, faster searching for symbols, improved debugging
&gt; optimized code, as well as numerous improvements in functionality and
&gt; performance.

On platforms where DWARF version 5 is supported (Linux, primarily), this commit
adds support for it behind a new `-Z dwarf-version=5` flag.

[1]: https://dwarfstd.org/Public_Review.php
</content>
</entry>
<entry>
<title>Allow to create definitions inside the query system.</title>
<updated>2022-07-06T20:50:55+00:00</updated>
<author>
<name>Camille GILLOT</name>
<email>gillot.camille@gmail.com</email>
</author>
<published>2021-07-12T20:19:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=43bb31b9540a439dcca65f47b8644eafe4a42e2d'/>
<id>urn:sha1:43bb31b9540a439dcca65f47b8644eafe4a42e2d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update TypeVisitor paths</title>
<updated>2022-07-06T05:41:53+00:00</updated>
<author>
<name>Alan Egerton</name>
<email>eggyal@gmail.com</email>
</author>
<published>2022-06-17T12:15:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4f0a64736b94a84da4272867366b8679b585e603'/>
<id>urn:sha1:4f0a64736b94a84da4272867366b8679b585e603</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move/rename `lazy::{OnceCell, Lazy}` to `cell::{OnceCell, LazyCell}`</title>
<updated>2022-06-16T15:53:59+00:00</updated>
<author>
<name>Maybe Waffle</name>
<email>waffle.lapkin@gmail.com</email>
</author>
<published>2022-06-16T15:41:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7c360dc117d554a11f7193505da0835c4b890c6f'/>
<id>urn:sha1:7c360dc117d554a11f7193505da0835c4b890c6f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add metadata generation for vtables when using VFE</title>
<updated>2022-06-14T12:50:52+00:00</updated>
<author>
<name>flip1995</name>
<email>philipp.krones@embecosm.com</email>
</author>
<published>2022-04-21T13:02:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e96e6e2c89265613e136369ccf314c408e1eb002'/>
<id>urn:sha1:e96e6e2c89265613e136369ccf314c408e1eb002</id>
<content type='text'>
This adds the typeid and `vcall_visibility` metadata to vtables when the
-Cvirtual-function-elimination flag is set.

The typeid is generated in the same way as for the
`llvm.type.checked.load` intrinsic from the trait_ref.

The offset that is added to the typeid is always 0. This is because LLVM
assumes that vtables are constructed according to the definition in the
Itanium ABI. This includes an "address point" of the vtable. In C++ this
is the offset in the vtable where information for RTTI is placed. Since
there is no RTTI information in Rust's vtables, this "address point" is
always 0. This "address point" in combination with the offset passed to
the `llvm.type.checked.load` intrinsic determines the final function
that should be loaded from the vtable in the
`WholeProgramDevirtualization` pass in LLVM. That's why the
`llvm.type.checked.load` intrinsics are generated with the typeid of the
trait, rather than with that of the function that is called. This
matches what `clang` does for C++.

The vcall_visibility metadata depends on three factors:

1. LTO level: Currently this is always fat LTO, because LLVM only
   supports this optimization with fat LTO.
2. Visibility of the trait: If the trait is publicly visible, VFE
   can only act on its vtables after linking.
3. Number of CGUs: if there is more than one CGU, also vtables with
   restricted visibility could be seen outside of the CGU, so VFE can
   only act on them after linking.

To reflect this, there are three visibility levels: Public, LinkageUnit,
and TranslationUnit.
</content>
</entry>
</feed>
