Uh oh!
There was an error while loading. Please reload this page.
mark calls in the unwind path as !noinline - #42771
Conversation
nagisa
commented
Jun 20, 2017
Any reason noinline over cold was used? |
nagisa
commented
Jun 20, 2017
Either way, can always change later if there any benefits to do so. @bors r+ |
bors
commented
Jun 20, 2017
📌 Commit 485e799 has been approved by |
There was a problem hiding this comment.
Should this ignore-test comment be removed, or is the test still failing?
The unwind path is always cold, so that should not have bad performance implications. This avoids catastrophic exponential inlining, and also decreases the size of librustc.so by 1.5% (OTOH, the size of `libstd.so` increased by 0.5% for some reason). Fixesrust-lang#41696.
arielb1
commented
Jun 20, 2017
Indeed. @bors r=nagisa |
bors
commented
Jun 20, 2017
📌 Commit 0b93798 has been approved by |
arielb1
commented
Jun 20, 2017
Indeed. @bors r=nagisa |
bors
commented
Jun 20, 2017
💡 This pull request was already approved, no need to approve it again.
|
bors
commented
Jun 20, 2017
📌 Commit 0b93798 has been approved by |
arielb1
commented
Jun 21, 2017
Had an accidental push @bors r=nagisa |
bors
commented
Jun 21, 2017
📌 Commit 0b93798 has been approved by |
bors
commented
Jun 21, 2017
mark calls in the unwind path as !noinline The unwind path is always cold, so that should not have bad performance implications. This avoids catastrophic exponential inlining, and also decreases the size of librustc.so by 1.5% (OTOH, the size of `libstd.so` increased by 0.5% for some reason). Fixes#41696. r? @nagisa
bors
commented
Jun 22, 2017
☀️ Test successful - status-appveyor, status-travis |
Mark drop calls in landing pads `cold` instead of `noinline` Now that deferred inlining has been disabled in LLVM (rust-lang#92110), this shouldn't cause catastrophic size blowup. I confirmed that the test cases from rust-lang#41696 (comment) still compile quickly (<1s) after this change. ~Although note that I wasn't able to reproduce the original issue using a recent rustc/llvm with deferred inlining enabled, so those tests may no longer be representative. I was also unable to create a modified test case that reproduced the original issue.~ (edit: I reproduced it on CI by accident--the first commit timed out on the LLVM 12 builder, because I forgot to make it conditional on LLVM version) r? `@nagisa` cc `@arielb1` (this effectively reverts rust-lang#42771 "mark calls in the unwind path as !noinline") cc `@RalfJung` (fixesrust-lang#46515) edit: also fixesrust-lang#87055
Mark drop calls in landing pads `cold` instead of `noinline` Now that deferred inlining has been disabled in LLVM (rust-lang#92110), this shouldn't cause catastrophic size blowup. I confirmed that the test cases from rust-lang#41696 (comment) still compile quickly (<1s) after this change. ~Although note that I wasn't able to reproduce the original issue using a recent rustc/llvm with deferred inlining enabled, so those tests may no longer be representative. I was also unable to create a modified test case that reproduced the original issue.~ (edit: I reproduced it on CI by accident--the first commit timed out on the LLVM 12 builder, because I forgot to make it conditional on LLVM version) r? `@nagisa` cc `@arielb1` (this effectively reverts rust-lang#42771 "mark calls in the unwind path as !noinline") cc `@RalfJung` (fixesrust-lang#46515) edit: also fixesrust-lang#87055
The unwind path is always cold, so that should not have bad performance
implications. This avoids catastrophic exponential inlining, and also
decreases the size of librustc.so by 1.5% (OTOH, the size of
libstd.soincreased by 0.5% for some reason).
Fixes#41696.
r? @nagisa