Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 10 pull requests #57094

Merged
merged 31 commits into from
Dec 24, 2018
Merged

Rollup of 10 pull requests #57094

merged 31 commits into from
Dec 24, 2018

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Dec 24, 2018

Successful merges:

Failed merges:

r? @ghost

daniellimws and others added 30 commits October 29, 2018 19:15
When building a distributed compiler on Linux where we use ThinLTO to
create the LLVM shared object this commit switches the compiler to
dynamically linking that LLVM artifact instead of statically linking to
LLVM. The primary goal here is to reduce CI compile times, avoiding two+
ThinLTO builds of all of LLVM. By linking dynamically to LLVM we'll
reuse the one ThinLTO step done by LLVM's build itself.

Lots of discussion about this change can be found [here] and down. A
perf run will show whether this is worth it or not!

[here]: rust-lang#53245 (comment)
This commit moves jemalloc to just the rustc binary rather than the
rustc_driver shared library, enusring that it's only used for binaries
that opt-in to it like rustc rather than other binaries using
librustc_driver like rustdoc/rls/etc. This will hopefully address rust-lang#56980
I was assuming that rust-lang#56792 would
have resulted in compiletest tests being executed in CI. However, I
couldn't find any mentions of the unit test names in any CI logs.

This adds the compiletest test execution to the checktools.sh script.
This way, checktools.sh continues to be used only for tools that are
published later on.
Instead disable creation of assumptions during inlining using an
LLVM opt flag.

The -Z arg-align-attributes option which previously controlled this
behavior is removed.
…x-sparc64

This is in accordance with the SPARC Compliance Definition 2.4.1,
Page 3P-12. It says that structs of up to 8 bytes (which applies
to empty structs as well) are to be passed in one register.
box: Add documentation for `From` impls

This is a part of rust-lang#51430. A brief description of the behaviour and examples are added to the documentation.

I am not sure what sort of examples to put for the `From` for `Pin` as my [code](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2015&gist=97c908f44e41c9faeffec5b61d72a03e) doesn't even manage to compile using the nightly build.

Somehow I feel that I missed out something so do let me know if more information is needed in the documentation or any of the examples require change.
…oerister

bootstrap: Link LLVM as a dylib with ThinLTO

When building a distributed compiler on Linux where we use ThinLTO to
create the LLVM shared object this commit switches the compiler to
dynamically linking that LLVM artifact instead of statically linking to
LLVM. The primary goal here is to reduce CI compile times, avoiding two+
ThinLTO builds of all of LLVM. By linking dynamically to LLVM we'll
reuse the one ThinLTO step done by LLVM's build itself.

Lots of discussion about this change can be found [here] and down. A
perf run will show whether this is worth it or not!

[here]: rust-lang#53245 (comment)
Add `std::os::fortanix_sgx` module

This PR adds the `std::os::sgx` module to expose platform-specific APIs behind the `sgx_platform` feature gate.

Depends on rust-lang#56972 to be able to meaningfully build `std::os` documentation for non-standard targets.

Tracking issue: rust-lang#56975
Allow testing pointers for inboundedness while forbidding dangling pointers

r? @RalfJung
…Simulacrum

rustc: Move jemalloc from rustc_driver to rustc

This commit moves jemalloc to just the rustc binary rather than the
rustc_driver shared library, enusring that it's only used for binaries
that opt-in to it like rustc rather than other binaries using
librustc_driver like rustdoc/rls/etc. This will hopefully address rust-lang#56980
…, r=kennytm

Actually run compiletest tests on CI

I was assuming that rust-lang#56792 would
have resulted in compiletest tests being executed on CI. However, I
couldn't find any mentions of the unit test names in any CI logs.

This adds the compiletest test execution to the checktools.sh script.
Enable emission of alignment attrs for pointer params

Instead disable creation of assumptions during inlining using an LLVM opt flag. For non-inlined functions, this gives us alignment information, while not inserting any assumes that kill other optimizations.

The `-Z arg-align-attributes` option which previously controlled this behavior is removed.

Fixes rust-lang#54982.

r? @nagisa

cc @eddyb who added the current behavior, and @scottmcm, who added the `-Z arg-align-attributes` flag.
librustc_codegen_llvm: Don't eliminate empty structs in C ABI on linux-sparc64

This is in accordance with the SPARC Compliance Definition 2.4.1,
Page 3P-12. It says that structs of up to 8 bytes (which applies
to empty structs as well) are to be passed in one register.
@Centril
Copy link
Contributor Author

Centril commented Dec 24, 2018

@bors r+ p=10

@bors
Copy link
Contributor

bors commented Dec 24, 2018

📌 Commit 6ce748a has been approved by Centril

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Dec 24, 2018
@bors
Copy link
Contributor

bors commented Dec 24, 2018

⌛ Testing commit 6ce748a with merge 50f3d6e...

bors added a commit that referenced this pull request Dec 24, 2018
Rollup of 10 pull requests

Successful merges:

 - #55470 (box: Add documentation for `From` impls)
 - #56242 (Add missing link in docs)
 - #56944 (bootstrap: Link LLVM as a dylib with ThinLTO)
 - #56978 (Add `std::os::fortanix_sgx` module)
 - #56985 (Allow testing pointers for inboundedness while forbidding dangling pointers)
 - #56986 (rustc: Move jemalloc from rustc_driver to rustc)
 - #57010 (Actually run compiletest tests on CI)
 - #57021 (Enable emission of alignment attrs for pointer params)
 - #57074 (Fix recursion limits)
 - #57085 (librustc_codegen_llvm: Don't eliminate empty structs in C ABI on linux-sparc64)

Failed merges:

r? @ghost
@bors
Copy link
Contributor

bors commented Dec 24, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: Centril
Pushing 50f3d6e to master...

@nikic
Copy link
Contributor

nikic commented Dec 24, 2018

Something in this rollup caused a perf regression: https://perf.rust-lang.org/compare.html?start=94bf2c15eb3d072e92855a605783a29920df9e46&end=50f3d6eccb85a24a02b7c1daf5e242768dddf3b5&stat=instructions:u

@nikic
Copy link
Contributor

nikic commented Dec 25, 2018

And also a big improvement in memory usage: https://perf.rust-lang.org/compare.html?start=94bf2c15eb3d072e92855a605783a29920df9e46&end=50f3d6eccb85a24a02b7c1daf5e242768dddf3b5&stat=max-rss

That makes me wonder if possibly #56986 might have disabled jemalloc in rustc as well? cc @alexcrichton

@alexcrichton
Copy link
Member

True! I'm on holiday until 2019, so I've filed #57115 to follow up on this later.

@Centril Centril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants