<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp, branch 1.55.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.55.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.55.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2021-07-09T20:00:19+00:00</updated>
<entry>
<title>Pass type when creating atomic load</title>
<updated>2021-07-09T20:00:19+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-07-04T15:49:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=33e9a6b565ddd7f20a5fd3f455eb2f3109d41801'/>
<id>urn:sha1:33e9a6b565ddd7f20a5fd3f455eb2f3109d41801</id>
<content type='text'>
Instead of determining it from the pointer type, explicitly pass
the type to load.
</content>
</entry>
<entry>
<title>Add first cut of functionality for #58713: support for #[link(kind = "raw-dylib")].</title>
<updated>2021-06-05T01:01:35+00:00</updated>
<author>
<name>Richard Cobbe</name>
<email>ricobbe@microsoft.com</email>
</author>
<published>2021-03-08T20:42:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6aa45b71b11823a3140736536a93c5eac11ceecb'/>
<id>urn:sha1:6aa45b71b11823a3140736536a93c5eac11ceecb</id>
<content type='text'>
This does not yet support #[link_name] attributes on functions, the #[link_ordinal]
attribute, #[link(kind = "raw-dylib")] on extern blocks in bin crates, or
stdcall functions on 32-bit x86.
</content>
</entry>
<entry>
<title>rustc: Store metadata-in-rlibs in object files</title>
<updated>2021-06-04T17:05:20+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2021-04-22T18:53:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0e0338744df6448de98d54d3aeb576cda893e938'/>
<id>urn:sha1:0e0338744df6448de98d54d3aeb576cda893e938</id>
<content type='text'>
This commit updates how rustc compiler metadata is stored in rlibs.
Previously metadata was stored as a raw file that has the same format as
`--emit metadata`. After this commit, however, the metadata is encoded
into a small object file which has one section which is the contents of
the metadata.

The motivation for this commit is to fix a common case where #83730
arises. The problem is that when rustc crates a `dylib` crate type it
needs to include entire rlib files into the dylib, so it passes
`--whole-archive` (or the equivalent) to the linker. The problem with
this, though, is that the linker will attempt to read all files in the
archive. If the metadata file were left as-is (today) then the linker
would generate an error saying it can't read the file. The previous
solution was to alter the rlib just before linking, creating a new
archive in a temporary directory which has the metadata file removed.

This problem from before this commit is now removed if the metadata file
is stored in an object file that the linker can read. The only caveat we
have to take care of is to ensure that the linker never actually
includes the contents of the object file into the final output. We apply
similar tricks as the `.llvmbc` bytecode sections to do this.

This involved changing the metadata loading code a bit, namely updating
some of the LLVM C APIs used to use non-deprecated ones and fiddling
with the lifetimes a bit to get everything to work out. Otherwise though
this isn't intended to be a functional change really, only that metadata
is stored differently in archives now.

This should end up fixing #83730 because by default dylibs will no
longer have their rlib dependencies "altered" meaning that
split-debuginfo will continue to have valid paths pointing at the
original rlibs. (note that we still "alter" rlibs if LTO is enabled to
remove Rust object files and we also "alter" for the #[link(cfg)]
feature, but that's rarely used).

Closes #83730
</content>
</entry>
<entry>
<title>RustWrapper: work around unification of diagnostic handlers</title>
<updated>2021-04-22T19:46:47+00:00</updated>
<author>
<name>Augie Fackler</name>
<email>augie@google.com</email>
</author>
<published>2021-03-23T22:23:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=fc2a74c64081dfc19a50c34e1b014b6d631fb6f7'/>
<id>urn:sha1:fc2a74c64081dfc19a50c34e1b014b6d631fb6f7</id>
<content type='text'>
This lets me build against llvm/main as of March 23rd, 2021. I'm not
entirely sure this is _correct_, but it appears to be functionally
identical to what was done in LLVM: existing callsites of
setInlineAsmDiagnosticHandler were moved to SetDiagnosticHandler() on
the context object, which we already set up in both places that we
called setInlineAsmDiagnosticHandler().
</content>
</entry>
<entry>
<title>Don't set `fast`(-math) for certain simd ops</title>
<updated>2021-04-17T20:33:10+00:00</updated>
<author>
<name>Simonas Kazlauskas</name>
<email>git@kazlauskas.me</email>
</author>
<published>2021-04-17T17:40:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=487e27350a16e35f77ca471f368be3da28dac27c'/>
<id>urn:sha1:487e27350a16e35f77ca471f368be3da28dac27c</id>
<content type='text'>
`fast-math` implies things like functions not being able to accept as an
argument or return as a result, say, `inf` which made these functions
confusingly named or behaving incorrectly, depending on how you
interpret it. Since the time when these intrinsics have been implemented
the intrinsics user's (stdsimd) approach has changed significantly and
so now it is required that these intrinsics operate normally rather than
in "whatever" way.

Fixes #84268
</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>Auto merge of #83387 - cuviper:min-llvm-10, r=nagisa</title>
<updated>2021-03-25T13:11:18+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2021-03-25T13:11:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6e17a5c5fd086ebe6f57216fb3ce5d1d8d6c83e5'/>
<id>urn:sha1:6e17a5c5fd086ebe6f57216fb3ce5d1d8d6c83e5</id>
<content type='text'>
Update the minimum external LLVM to 10

r? `@nikic`
</content>
</entry>
<entry>
<title>cleanup: add some comments per review feedback</title>
<updated>2021-03-22T18:37:49+00:00</updated>
<author>
<name>Augie Fackler</name>
<email>augie@google.com</email>
</author>
<published>2021-03-22T18:37:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9431e8577d44dcc463134275421a6da6d862c377'/>
<id>urn:sha1:9431e8577d44dcc463134275421a6da6d862c377</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update the minimum external LLVM to 10</title>
<updated>2021-03-22T18:33:43+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2021-03-22T18:33:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7d872f538efc5cb3786c3aa0a6654bae7a67ec63'/>
<id>urn:sha1:7d872f538efc5cb3786c3aa0a6654bae7a67ec63</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: I meant LLVM version 13, not 12</title>
<updated>2021-03-19T20:46:40+00:00</updated>
<author>
<name>Augie Fackler</name>
<email>augie@google.com</email>
</author>
<published>2021-03-19T20:46:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=babe894bab47e43c2a884fe367095905e4e88993'/>
<id>urn:sha1:babe894bab47e43c2a884fe367095905e4e88993</id>
<content type='text'>
</content>
</entry>
</feed>
