<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp, 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-26T11:29:18+00:00</updated>
<entry>
<title>Remove dead code from cg_llvm</title>
<updated>2022-07-26T11:29:18+00:00</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2022-07-26T11:29:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=017e1726ff658117f43854181fb75c6b26a53b88'/>
<id>urn:sha1:017e1726ff658117f43854181fb75c6b26a53b88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #98162 - nextsilicon:support_lto_embed_bitcode, r=davidtwco</title>
<updated>2022-07-21T10:13:59+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2022-07-21T10:13:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=74f600b990240556c9a355c5d03293a10934bd1b'/>
<id>urn:sha1:74f600b990240556c9a355c5d03293a10934bd1b</id>
<content type='text'>
Allow to disable thinLTO buffer to support lto-embed-bitcode lld feature

Hello
This change is to fix issue (https://github.com/rust-lang/rust/issues/84395) in which passing "-lto-embed-bitcode=optimized" to lld when linking rust code via linker-plugin-lto doesn't produce the expected result.

Instead of emitting a single unified module into a llvmbc section of the linked elf, it emits multiple submodules.
This is caused because rustc emits the BC modules after running llvm `createWriteThinLTOBitcodePass` pass.
Which in turn triggers a thinLTO linkage and causes the said issue.

This patch allows via compiler flag (-Cemit-thin-lto=&lt;bool&gt;) to select between running `createWriteThinLTOBitcodePass` and `createBitcodeWriterPass`.
Note this pattern of selecting between those 2 passes is common inside of LLVM code.
The default is to match the old behavior.
</content>
</entry>
<entry>
<title>Auto merge of #95685 - oxidecomputer:restore-static-dwarf, r=pnkfelix</title>
<updated>2022-07-16T00:18:54+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2022-07-16T00:18:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e6c43cf8b98e4837bbee1cab225621001a3f2230'/>
<id>urn:sha1:e6c43cf8b98e4837bbee1cab225621001a3f2230</id>
<content type='text'>
Revert "Work around invalid DWARF bugs for fat LTO"

Since September, the toolchain has not been generating reliable DWARF
information for static variables when LTO is on. This has affected
projects in the embedded space where the use of LTO is typical. In our
case, it has kept us from bumping past the 2021-09-22 nightly toolchain
lest our debugger break. This has been a pretty dramatic regression for
people using debuggers and static variables. See #90357 for more info
and a repro case.

This commit is a mechanical revert of
d5de680e20def848751cb3c11e1182408112b1d3 from PR #89041, which caused
the issue. (Note on that PR that the commit's author has requested it be
reverted.)

I have locally verified that this fixes #90357 by restoring the
functionality of both the repro case I posted on that bug, and debugger
behavior on real programs. There do not appear to be test cases for this
in the toolchain; if I've missed them, point me at 'em and I'll update
them.
</content>
</entry>
<entry>
<title>rustc: add ability to output regular LTO bitcode modules</title>
<updated>2022-07-14T19:21:26+00:00</updated>
<author>
<name>Ziv Dunkelman</name>
<email>ziv.dunkelman@nextsilicon.com</email>
</author>
<published>2022-06-08T14:30:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=724c91234dd49b88d70ebead406d09105695c3e5'/>
<id>urn:sha1:724c91234dd49b88d70ebead406d09105695c3e5</id>
<content type='text'>
Adding the option to control from rustc CLI
if the resulted ".o" bitcode module files are with
thinLTO info or regular LTO info.

Allows using "-lto-embed-bitcode=optimized" during linkage
correctly.

Signed-off-by: Ziv Dunkelman &lt;ziv.dunkelman@nextsilicon.com&gt;
</content>
</entry>
<entry>
<title>llvm-wrapper: adapt for an LLVM API change</title>
<updated>2022-06-28T14:08:35+00:00</updated>
<author>
<name>Krasimir Georgiev</name>
<email>krasimir@google.com</email>
</author>
<published>2022-06-28T14:08:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=fe02ee8be97fc94166e3920d16d550bd6994fabd'/>
<id>urn:sha1:fe02ee8be97fc94166e3920d16d550bd6994fabd</id>
<content type='text'>
This adapts llvm-wrapper for
https://github.com/llvm/llvm-project/commit/dacfa24f75c328ae30b710ecadaa18e4ba10cdc6,
which removed ASanGlobalsMetadataAnalysis.
</content>
</entry>
<entry>
<title>Stub out more PassManagerBuilder functions</title>
<updated>2022-04-20T07:36:02+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-04-20T07:25:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6dc0bcc5db00524af73eb7dd2f6e24f38736f1aa'/>
<id>urn:sha1:6dc0bcc5db00524af73eb7dd2f6e24f38736f1aa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Stub out various legacy PM functions with LLVM 15</title>
<updated>2022-04-20T07:25:47+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-04-19T11:22:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=890cabac8acb566dee2d01bdfd9198546adfa310'/>
<id>urn:sha1:890cabac8acb566dee2d01bdfd9198546adfa310</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Respect -Z verify-llvm-ir and other flags that add extra passes when combined with -C no-prepopulate-passes in the new LLVM Pass Manager.</title>
<updated>2022-04-10T19:40:16+00:00</updated>
<author>
<name>Luqman Aden</name>
<email>me@luqman.ca</email>
</author>
<published>2022-04-10T19:30:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=84fb481bf51ed69e5cf0780319ba72ead5420732'/>
<id>urn:sha1:84fb481bf51ed69e5cf0780319ba72ead5420732</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert "Work around invalid DWARF bugs for fat LTO"</title>
<updated>2022-04-05T17:38:13+00:00</updated>
<author>
<name>Cliff L. Biffle</name>
<email>cliff@oxide.computer</email>
</author>
<published>2022-04-04T18:03:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=98190b716829fd4edbf1b364a1a662de9a9ca7bb'/>
<id>urn:sha1:98190b716829fd4edbf1b364a1a662de9a9ca7bb</id>
<content type='text'>
Since September, the toolchain has not been generating reliable DWARF
information for static variables when LTO is on. This has affected
projects in the embedded space where the use of LTO is typical. In our
case, it has kept us from bumping past the 2021-09-22 nightly toolchain
lest our debugger break. This has been a pretty dramatic regression for
people using debuggers and static variables. See #90357 for more info
and a repro case.

This commit is a mechanical revert of
d5de680e20def848751cb3c11e1182408112b1d3 from PR #89041, which caused
the issue. (Note on that PR that the commit's author has requested it be
reverted.)

I have locally verified that this fixes #90357 by restoring the
functionality of both the repro case I posted on that bug, and debugger
behavior on real programs. There do not appear to be test cases for this
in the toolchain; if I've missed them, point me at 'em and I'll update
them.
</content>
</entry>
<entry>
<title>Remove LLVMRustMarkAllFunctionsNounwind</title>
<updated>2022-01-14T00:36:12+00:00</updated>
<author>
<name>Amanieu d'Antras</name>
<email>amanieu@gmail.com</email>
</author>
<published>2022-01-14T00:10:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=606d9c0c0e54b7ed6ec962f3eb492f335c6afe81'/>
<id>urn:sha1:606d9c0c0e54b7ed6ec962f3eb492f335c6afe81</id>
<content type='text'>
This was originally introduced in #10916 as a way to remove all landing
pads when performing LTO. However this is no longer necessary today
since rustc properly marks all functions and call-sites as nounwind
where appropriate.

In fact this is incorrect in the presence of `extern "C-unwind"` which
must create a landing pad when compiled with `-C panic=abort` so that
foreign exceptions are caught and properly turned into aborts.
</content>
</entry>
</feed>
