-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Rollup of 6 pull requests #63094
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 6 pull requests #63094
Conversation
This commit brings in a number of minor updates for rustc's support for the wasm target which has changed in the LLVM 9 update. Notable updates include: * The compiler now no longer manually inserts the `producers` section, instead relying on LLVM to do so. LLVM uses the `llvm.ident` metadata for the `processed-by` directive (which is now emitted on the wasm target in this PR) and it uses debuginfo to figure out what `language` to put in the `producers` section. * Threaded WebAssembly code now requires different flags to be passed with LLD. In LLD we now pass: * `--shared-memory` - required since objects are compiled with atomics. This also means that the generated memory will be marked as `shared`. * `--max-memory=1GB` - required with the `--shared-memory` argument since shared memories in WebAssembly must have a maximum size. The 1GB number is intended to be a conservative estimate for rustc, but it should be overridable with `-C link-arg` if necessary. * `--passive-segments` - this has become the default for multithreaded memory, but when compiling a threaded module all data segments need to be marked as passive to ensure they don't re-initialize memory for each thread. This will also cause LLD to emit a synthetic function to initialize memory which users will have to arrange to call. * The `__heap_base` and `__data_end` globals are explicitly exported since they're now hidden by default due to the `--export` flags we pass to LLD.
This commit moves `thread_local!` on WebAssembly targets to using the `#[thread_local]` attribute in LLVM. This was recently implemented upstream and is [in the process of being documented][dox]. This change only takes affect if modules are compiled with `+atomics` which is currently unstable and a pretty esoteric method of compiling wasm artifacts. This "new power" of the wasm toolchain means that the old `wasm-bindgen-threads` feature of the standard library can be removed since it should now be possible to create a fully functioning threaded wasm module without intrusively dealing with libstd symbols or intrinsics. Yay! [dox]: WebAssembly/tool-conventions#116
This extracts the core visiting logic
… and avoid rightwards drift
They are now library features.
ignore wait-forked-but-failed-child.rs as there is no command 'ps' on vxWorks ignore process-sigpipe.rs as there is no 'sh' on vxWorks ignore core-run-destroy.rs as there is no 'cat' and 'sleep' on vxWorks
rustc: Update wasm32 support for LLVM 9 This commit brings in a number of minor updates for rustc's support for the wasm target which has changed in the LLVM 9 update. Notable updates include: * The compiler now no longer manually inserts the `producers` section, instead relying on LLVM to do so. LLVM uses the `llvm.ident` metadata for the `processed-by` directive (which is now emitted on the wasm target in this PR) and it uses debuginfo to figure out what `language` to put in the `producers` section. * Threaded WebAssembly code now requires different flags to be passed with LLD. In LLD we now pass: * `--shared-memory` - required since objects are compiled with atomics. This also means that the generated memory will be marked as `shared`. * `--max-memory=1GB` - required with the `--shared-memory` argument since shared memories in WebAssembly must have a maximum size. The 1GB number is intended to be a conservative estimate for rustc, but it should be overridable with `-C link-arg` if necessary. * `--passive-segments` - this has become the default for multithreaded memory, but when compiling a threaded module all data segments need to be marked as passive to ensure they don't re-initialize memory for each thread. This will also cause LLD to emit a synthetic function to initialize memory which users will have to arrange to call. * The `__heap_base` and `__data_end` globals are explicitly exported since they're now hidden by default due to the `--export` flags we pass to LLD.
…-2, r=Xanewok Various cleanups to save analysis
…oli-obk Miri: fix determining size of an "extra function" allocation Fixes [a bug](rust-lang/miri#862) introduced by rust-lang#62982. Best reviewed commit-by-commit. r? @oli-obk
…nkov cleanup: Remove some language features related to built-in macros They are now library features. Cleanup after rust-lang#62086. The unstable book files are moved because tidy complained.
Ignore test cases that are not supported by vxWorks bypass x86stdcall.rs for vxworks ignore wait-forked-but-failed-child.rs as there is no command 'ps' on vxWorks ignore process-sigpipe.rs as there is no 'sh' on vxWorks ignore core-run-destroy.rs as there is no 'cat' and 'sleep' on vxWorks
…varkor Update `impl Trait` gate issues cc rust-lang#63065 cc rust-lang#63063 r? @varkor cc @alexreg
@bors r+ p=6 rollup=never |
📌 Commit f8321d0 has been approved by |
Rollup of 6 pull requests Successful merges: - #62809 (rustc: Update wasm32 support for LLVM 9) - #63055 (Various cleanups to save analysis) - #63076 (Miri: fix determining size of an "extra function" allocation) - #63077 (cleanup: Remove some language features related to built-in macros) - #63086 (Ignore test cases that are not supported by vxWorks) - #63092 (Update `impl Trait` gate issues) Failed merges: r? @ghost
☀️ Test successful - checks-azure |
The performance regressed a bit but I don't know which PR caused it and whom to ping https://perf.rust-lang.org/compare.html?start=c7312fe4ff85ada30103cea58db25d83e0bec4b0&end=8b94e9e9188b65df38a5f1ae723617dc2dfb3155&stat=instructions:u |
Successful merges:
impl Trait
gate issues #63092 (Updateimpl Trait
gate issues)Failed merges:
r? @ghost