-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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 #82847
Rollup of 10 pull requests #82847
Commits on Feb 13, 2021
-
Configuration menu - View commit details
-
Copy full SHA for 6a679ff - Browse repository at this point
Copy the full SHA 6a679ffView commit details
Commits on Mar 1, 2021
-
Change built-in kernel targets to be os = none throughout
Whether for Rust's own `target_os`, LLVM's triples, or GNU config's, the OS-related have fields have been for code running *on* that OS, not code that is *part* of the OS. The difference is huge, as syscall interfaces are nothing like freestanding interfaces. Kernels are (hypervisors and other more exotic situations aside) freestanding programs that use the interfaces provided by the hardware. It's *those* interfaces, the ones external to the program being built and its software dependencies, that are the content of the target. For the Linux Kernel in particular, `target_env: "gnu"` is removed for the same reason: that `-gnu` refers to glibc or GNU/linux, neither of which applies to the kernel itself. Relates to rust-lang#74247 Thanks @ojeda for catching some things.
Configuration menu - View commit details
-
Copy full SHA for 9d25ccf - Browse repository at this point
Copy the full SHA 9d25ccfView commit details
Commits on Mar 2, 2021
-
Clean up error reporting for deprecated passes
- Use spans for deprecated attributes - Use a proper diagnostic for unknown passes, instead of error logging - Add tests for unknown passes - Improve some wording in diagnostics
Configuration menu - View commit details
-
Copy full SHA for 44c2794 - Browse repository at this point
Copy the full SHA 44c2794View commit details -
Report that
doc(plugins)
doesn't work using diagnostics instead of ……`println!` This also adds a test for the output and fixes `rustc_attr` to properly know that `plugins` is a valid attribute.
Configuration menu - View commit details
-
Copy full SHA for d5c300b - Browse repository at this point
Copy the full SHA d5c300bView commit details
Commits on Mar 3, 2021
-
Fix diagnostic suggests adding type
[type error]
Fixes rust-lang#79040 Unresolved questions: Why does this change output the diagnostic twice? Why does the CI fail when the errors are pointed out (UI tests)?
Configuration menu - View commit details
-
Copy full SHA for d9d6921 - Browse repository at this point
Copy the full SHA d9d6921View commit details -
rustc_target: add "unwind" payloads to
Abi
### Overview This commit begins the implementation work for RFC 2945. For more information, see the rendered RFC [1] and tracking issue [2]. A boolean `unwind` payload is added to the `C`, `System`, `Stdcall`, and `Thiscall` variants, marking whether unwinding across FFI boundaries is acceptable. The cases where each of these variants' `unwind` member is true correspond with the `C-unwind`, `system-unwind`, `stdcall-unwind`, and `thiscall-unwind` ABI strings introduced in RFC 2945 [3]. ### Feature Gate and Unstable Book This commit adds a `c_unwind` feature gate for the new ABI strings. Tests for this feature gate are included in `src/test/ui/c-unwind/`, which ensure that this feature gate works correctly for each of the new ABIs. A new language features entry in the unstable book is added as well. ### Further Work To Be Done This commit does not proceed to implement the new unwinding ABIs, and is intentionally scoped specifically to *defining* the ABIs and their feature flag. ### One Note on Test Churn This will lead to some test churn, in re-blessing hash tests, as the deleted comment in `src/librustc_target/spec/abi.rs` mentioned, because we can no longer guarantee the ordering of the `Abi` variants. While this is a downside, this decision was made bearing in mind that RFC 2945 states the following, in the "Other `unwind` Strings" section [3]: > More unwind variants of existing ABI strings may be introduced, > with the same semantics, without an additional RFC. Adding a new variant for each of these cases, rather than specifying a payload for a given ABI, would quickly become untenable, and make working with the `Abi` enum prone to mistakes. This approach encodes the unwinding information *into* a given ABI, to account for the future possibility of other `-unwind` ABI strings. ### Ignore Directives `ignore-*` directives are used in two of our `*-unwind` ABI test cases. Specifically, the `stdcall-unwind` and `thiscall-unwind` test cases ignore architectures that do not support `stdcall` and `thiscall`, respectively. These directives are cribbed from `src/test/ui/c-variadic/variadic-ffi-1.rs` for `stdcall`, and `src/test/ui/extern/extern-thiscall.rs` for `thiscall`. This would otherwise fail on some targets, see: rust-lang-ci@fcf697f ### Footnotes [1]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md [2]: rust-lang#74990 [3]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md#other-unwind-abi-strings
katelyn a. martin committedMar 3, 2021 Configuration menu - View commit details
-
Copy full SHA for 5461ee0 - Browse repository at this point
Copy the full SHA 5461ee0View commit details -
implement unwinding abi's (RFC 2945)
### Changes This commit implements unwind ABI's, specified in RFC 2945. We adjust the `rustc_middle::ty::layout::fn_can_unwind` function, used to compute whether or not a `FnAbi` object represents a function that should be able to unwind when `panic=unwind` is in use. Changes are also made to `rustc_mir_build::build::should_abort_on_panic` so that the function ABI is used to determind whether it should abort, assuming that the `panic=unwind` strategy is being used, and no explicit unwind attribute was provided. ### Tests Unit tests, checking that the behavior is correct for `C-unwind`, `stdcall-unwind`, `system-unwind`, and `thiscall-unwind`, are included. These alternative `unwind` ABI strings are specified in RFC 2945, in the "_Other `unwind` ABI strings_" section. Additionally, a test case is included to assert that the LLVM IR generated for an external function defined with the `C-unwind` ABI will be appropriately labeled with the `nounwind` LLVM attribute when the `panic=abort` compilation flag is used. ### Ignore Directives This commit uses `ignore-*` directives in two of our `*-unwind` ABI test cases. Specifically, the `stdcall-unwind` and `thiscall-unwind` test cases ignore architectures that do not support `stdcall` and `thiscall`, respectively. These directives are cribbed from `src/test/ui/c-variadic/variadic-ffi-1.rs` for `stdcall`, and `src/test/ui/extern/extern-thiscall.rs` for `thiscall`.
katelyn a. martin committedMar 3, 2021 Configuration menu - View commit details
-
Copy full SHA for 9a007cf - Browse repository at this point
Copy the full SHA 9a007cfView commit details -
add integration tests, unwind across FFI boundary
### Integration Tests This commit introduces some new fixtures to the `run-make-fulldeps` test suite. * c-unwind-abi-catch-panic: Exercise unwinding a panic. This catches a panic across an FFI boundary and downcasts it into an integer. * c-unwind-abi-catch-lib-panic: This is similar to the previous `*catch-panic` test, however in this case the Rust code that panics resides in a separate crate. ### Add `rust_eh_personality` to `#[no_std]` alloc tests This commit addresses some test failures that now occur in the following two tests: * no_std-alloc-error-handler-custom.rs * no_std-alloc-error-handler-default.rs Each test now defines a `rust_eh_personality` extern function, in the same manner as shown in the "Writing an executable without stdlib" section of the `lang_items` documentation here: https://doc.rust-lang.org/unstable-book/language-features/lang-items.html#writing-an-executable-without-stdlib Without this change, these tests would fail to compile due to a linking error explaining that there was an "undefined reference to `rust_eh_personality'." ### Updated hash * update 32-bit hash in `impl1` test ### Panics This commit uses `panic!` macro invocations that return a string, rather than using an integer as a panic payload. Doing so avoids the following warnings that were observed during rollup for the `*-msvc-1` targets: ``` warning: panic message is not a string literal --> panic.rs:10:16 | 10 | panic!(x); // That is too big! | ^ | = note: `#[warn(non_fmt_panic)]` on by default = note: this is no longer accepted in Rust 2021 help: add a "{}" format string to Display the message | 10 | panic!("{}", x); // That is too big! | ^^^^^ help: or use std::panic::panic_any instead | 10 | std::panic::panic_any(x); // That is too big! | ^^^^^^^^^^^^^^^^^^^^^ warning: 1 warning emitted ``` See: https://github.com/rust-lang-ci/rust/runs/1992118428 As these errors imply, panicking without a format string will be disallowed in Rust 2021, per rust-lang#78500.
katelyn a. martin committedMar 3, 2021 Configuration menu - View commit details
-
Copy full SHA for 0fd2fd9 - Browse repository at this point
Copy the full SHA 0fd2fd9View commit details -
### Add debug assertion to check `AbiDatas` ordering This makes a small alteration to `Abi::index`, so that we include a debug assertion to check that the index we are returning corresponds with the same abi in our data array. This will help prevent ordering bugs in the future, which can manifest in rather strange errors. ### Using exhaustive ABI matches This slightly modifies the changes from our previous commits, favoring exhaustive matches in place of `_ => ...` fall-through arms. This should help with maintenance in the future, when additional ABI's are added, or when existing ABI's are modified. ### List all `-unwind` ABI's in unstable book This updates the `c-unwind` page in the unstable book to list _all_ of the other ABI strings that are introduced by this feature gate. Now, all of the ABI's specified by RFC 2945 are shown. Co-authored-by: Amanieu d'Antras <[email protected]> Co-authored-by: Niko Matsakis <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for d8bfdc8 - Browse repository at this point
Copy the full SHA d8bfdc8View commit details
Commits on Mar 4, 2021
-
Don't require a
DocContext
forreport_diagnostic
This is needed for the next commit, which needs access to the `cx` from within the `decorate` closure. - Change `as_local_hir_id` to an associated function, since it only needs a `TyCtxt` - Change `source_span_for_markdown_range` to only take a `TyCtxt`
Configuration menu - View commit details
-
Copy full SHA for b3c4e25 - Browse repository at this point
Copy the full SHA b3c4e25View commit details -
Configuration menu - View commit details
-
Copy full SHA for 675edd0 - Browse repository at this point
Copy the full SHA 675edd0View commit details -
expand: Remove obsolete
DirectoryOwnership::UnownedViaMod
This ownership kind is only constructed in the case of path attributes like `#[path = ".."]` without a file name segment, which always represent some kind of directories and will produce and error on attempt to parse them as a module file.
Configuration menu - View commit details
-
Copy full SHA for bc18eb4 - Browse repository at this point
Copy the full SHA bc18eb4View commit details -
expand: Move module file path stack from global session to expansion …
…data Also don't push the paths on the stack directly in `fn parse_external_mod`, return them instead.
Configuration menu - View commit details
-
Copy full SHA for 39052c5 - Browse repository at this point
Copy the full SHA 39052c5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5bdf81d - Browse repository at this point
Copy the full SHA 5bdf81dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3d0b622 - Browse repository at this point
Copy the full SHA 3d0b622View commit details -
Configuration menu - View commit details
-
Copy full SHA for 46b67aa - Browse repository at this point
Copy the full SHA 46b67aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for da3419e - Browse repository at this point
Copy the full SHA da3419eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 29a9ef2 - Browse repository at this point
Copy the full SHA 29a9ef2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e1d574 - Browse repository at this point
Copy the full SHA 1e1d574View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1fe2eb8 - Browse repository at this point
Copy the full SHA 1fe2eb8View commit details
Commits on Mar 5, 2021
-
Prevent Zip specialization from calling __iterator_get_unchecked twic…
…e with the same index after calling next_back
Configuration menu - View commit details
-
Copy full SHA for 2371914 - Browse repository at this point
Copy the full SHA 2371914View commit details -
Configuration menu - View commit details
-
Copy full SHA for c1bfb9a - Browse repository at this point
Copy the full SHA c1bfb9aView commit details
Commits on Mar 6, 2021
-
Configuration menu - View commit details
-
Copy full SHA for 7d3a6f1 - Browse repository at this point
Copy the full SHA 7d3a6f1View commit details -
Configuration menu - View commit details
-
Copy full SHA for fbc1741 - Browse repository at this point
Copy the full SHA fbc1741View commit details -
Make some Option, Result methods unstably const
The following functions are now unstably const: - Option::transpose - Option::flatten - Result::transpose
Configuration menu - View commit details
-
Copy full SHA for 79c2b75 - Browse repository at this point
Copy the full SHA 79c2b75View commit details -
Rollup merge of rust-lang#76570 - cratelyn:implement-rfc-2945-c-unwin…
…d-abi, r=Amanieu Implement RFC 2945: "C-unwind" ABI ## Implement RFC 2945: "C-unwind" ABI This branch implements [RFC 2945]. The tracking issue for this RFC is rust-lang#74990. The feature gate for the issue is `#![feature(c_unwind)]`. This RFC was created as part of the ffi-unwind project group tracked at rust-lang/lang-team#19. ### Changes Further details will be provided in commit messages, but a high-level overview of the changes follows: * A boolean `unwind` payload is added to the `C`, `System`, `Stdcall`, and `Thiscall` variants, marking whether unwinding across FFI boundaries is acceptable. The cases where each of these variants' `unwind` member is true correspond with the `C-unwind`, `system-unwind`, `stdcall-unwind`, and `thiscall-unwind` ABI strings introduced in RFC 2945 [3]. * This commit adds a `c_unwind` feature gate for the new ABI strings. Tests for this feature gate are included in `src/test/ui/c-unwind/`, which ensure that this feature gate works correctly for each of the new ABIs. A new language features entry in the unstable book is added as well. * We adjust the `rustc_middle::ty::layout::fn_can_unwind` function, used to compute whether or not a `FnAbi` object represents a function that should be able to unwind when `panic=unwind` is in use. * Changes are also made to `rustc_mir_build::build::should_abort_on_panic` so that the function ABI is used to determind whether it should abort, assuming that the `panic=unwind` strategy is being used, and no explicit unwind attribute was provided. [RFC 2945]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md
Configuration menu - View commit details
-
Copy full SHA for c940b1d - Browse repository at this point
Copy the full SHA c940b1dView commit details -
Rollup merge of rust-lang#77916 - QuiltOS:kernel-code-targets-os-none…
…, r=joshtriplett Change built-in kernel targets to be os = none throughout Whether for Rust's own `target_os`, LLVM's triples, or GNU config's, the OS-related have fields have been for code running *on* that OS, not code hat is *part* of the OS. The difference is huge, as syscall interfaces are nothing like freestanding interfaces. Kernels are (hypervisors and other more exotic situations aside) freestanding programs that use the interfaces provided by the hardware. It's *those* interfaces, the ones external to the program being built and its software dependencies, that are the content of the target. For the Linux Kernel in particular, `target_env: "gnu"` is removed for the same reason: that `-gnu` refers to glibc or GNU/linux, neither of which applies to the kernel itself. Relates to rust-lang#74247
Configuration menu - View commit details
-
Copy full SHA for a9875b5 - Browse repository at this point
Copy the full SHA a9875b5View commit details -
Rollup merge of rust-lang#82047 - the8472:fast-rename, r=davidtwco
bypass auto_da_alloc for metadata files This saves about 0.7% when rerunning the UI test suite. I.e. when the metadata files exist and will be overwritten. No improvements expected for a clean build. So it might show up in incr-patched perf results. ``` regular rename: Benchmark rust-lang#1: touch src/tools/compiletest/src/main.rs ; RUSTC_WRAPPER="" schedtool -B -e ./x.py test src/test/ui Time (mean ± σ): 47.305 s ± 0.170 s [User: 1631.540 s, System: 412.648 s] Range (min … max): 47.125 s … 47.856 s 20 runs non-durable rename: Benchmark rust-lang#1: touch src/tools/compiletest/src/main.rs ; RUSTC_WRAPPER="" schedtool -B -e ./x.py test src/test/ui Time (mean ± σ): 46.930 s ± 0.064 s [User: 1634.344 s, System: 396.038 s] Range (min … max): 46.759 s … 47.043 s 20 runs ``` There are more places that trigger auto_da_alloc behavior by overwriting existing files with O_TRUNC, but those are much harder to locate because `O_TRUNC` is set on `open()` but the writeback is triggered on `close()`. The latter is the part which shows up in profiles.
Configuration menu - View commit details
-
Copy full SHA for 2b80d79 - Browse repository at this point
Copy the full SHA 2b80d79View commit details -
Rollup merge of rust-lang#82130 - jhpratt:const-option-result, r=Ralf…
…Jung Make some Option, Result methods unstably const The following methods are now unstably const: - Option::transpose - Option::flatten - Result::flatten While some methods for could likely be made `const` in the future, nearly all of them require something to be dropped at compile-time, which isn't currently supported. The functions listed above should have a trivial path to stabilization.
Configuration menu - View commit details
-
Copy full SHA for d25eccb - Browse repository at this point
Copy the full SHA d25eccbView commit details -
Rollup merge of rust-lang#82292 - SkiFire13:fix-issue-82291, r=m-ou-se
Prevent specialized ZipImpl from calling `__iterator_get_unchecked` twice with the same index Fixes rust-lang#82291 It's open for review, but conflicts with rust-lang#82289, wait before merging. The conflict involves only the new test, so it should be rather trivial to fix.
Configuration menu - View commit details
-
Copy full SHA for 4c7e3ce - Browse repository at this point
Copy the full SHA 4c7e3ceView commit details -
Rollup merge of rust-lang#82402 - jyn514:module-cache-refcell, r=Guil…
…laumeGomez Remove RefCell around `module_trait_cache` This builds on rust-lang#82018 and should not be merged before. ## Don't require a `DocContext` for `report_diagnostic` This is needed for the next commit, which needs mutable access to the `cx` from within the `decorate` closure. - Change `as_local_hir_id` to an associated function, since it only needs a `TyCtxt` - Change `source_span_for_markdown_range` to only take a `TyCtxt` ## Remove RefCell around module_trait_cache This is mostly just changing lots of functions from `&DocContext` to `&mut DocContext`.
Configuration menu - View commit details
-
Copy full SHA for 17132ce - Browse repository at this point
Copy the full SHA 17132ceView commit details -
Rollup merge of rust-lang#82415 - petrochenkov:modin3, r=davidtwco
expand: Refactor module loading This is an accompanying PR to rust-lang#82399, but they can be landed independently. See individual commits for more details. Anyone should be able to review this equally well because all people actually familiar with this code left the project.
Configuration menu - View commit details
-
Copy full SHA for 0005a16 - Browse repository at this point
Copy the full SHA 0005a16View commit details -
Rollup merge of rust-lang#82592 - Lonami:patch-1, r=RalfJung
Improve transmute docs with further clarifications Closes rust-lang#82493. Please let me know if any of the new wording sounds off, English is not my mother tongue.
Configuration menu - View commit details
-
Copy full SHA for ad34174 - Browse repository at this point
Copy the full SHA ad34174View commit details -
Rollup merge of rust-lang#82651 - jyn514:rustdoc-warnings, r=Guillaum…
…eGomez Cleanup rustdoc warnings ## Clean up error reporting for deprecated passes Using `error!` here goes all the way back to the original commit, rust-lang#8540. I don't see any reason to use logging; rustdoc should use diagnostics wherever possible. See rust-lang#81932 (comment) for further context. - Use spans for deprecated attributes - Use a proper diagnostic for unknown passes, instead of error logging - Add tests for unknown passes - Improve some wording in diagnostics ## Report that `doc(plugins)` doesn't work using diagnostics instead of `eprintln!` This also adds a test for the output. This was added in rust-lang#52194. I don't see any particular reason not to use diagnostics here, I think it was just missed in rust-lang#50541.
Configuration menu - View commit details
-
Copy full SHA for 44bd3de - Browse repository at this point
Copy the full SHA 44bd3deView commit details -
Rollup merge of rust-lang#82720 - henryboisdequin:fix-79040, r=oli-obk
Fix diagnostic suggests adding type `[type error]` Fixes rust-lang#79040 ### Unresolved questions: <del>Why does this change output the diagnostic twice (`src/test/ui/79040.rs`)?</del> Thanks ````@oli-obk````
Configuration menu - View commit details
-
Copy full SHA for 44cb131 - Browse repository at this point
Copy the full SHA 44cb131View commit details