-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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 16 pull requests #58664
Rollup of 16 pull requests #58664
Commits on Feb 3, 2019
-
RangeInclusive internal iteration performance improvement.
Specialize Iterator::try_fold and DoubleEndedIterator::try_rfold to improve code generation in all internal iteration scenarios. This changes brings the performance of internal iteration with RangeInclusive on par with the performance of iteration with Range: - Single conditional jump in hot loop, - Unrolling and vectorization, - And even Closed Form substitution. Unfortunately, it only applies to internal iteration. Despite various attempts at stream-lining the implementation of next and next_back, LLVM has stubbornly refused to optimize external iteration appropriately, leaving me with a choice between: - The current implementation, for which Closed Form substitution is performed, but which uses 2 conditional jumps in the hot loop when optimization fail. - An implementation using a "is_done" boolean, which uses 1 conditional jump in the hot loop when optimization fail, allowing unrolling and vectorization, but for which Closed Form substitution fails. In the absence of any conclusive evidence as to which usecase matters most, and with no assurance that the lack of Closed Form substitution is not indicative of other optimizations being foiled, there is no way to pick one implementation over the other, and thus I defer to the statu quo as far as next and next_back are concerned.
Configuration menu - View commit details
-
Copy full SHA for eb5b096 - Browse repository at this point
Copy the full SHA eb5b096View commit details
Commits on Feb 5, 2019
-
Configuration menu - View commit details
-
Copy full SHA for a15916b - Browse repository at this point
Copy the full SHA a15916bView commit details
Commits on Feb 6, 2019
-
Configuration menu - View commit details
-
Copy full SHA for d4c52bf - Browse repository at this point
Copy the full SHA d4c52bfView commit details
Commits on Feb 9, 2019
-
Configuration menu - View commit details
-
Copy full SHA for bc9bfc7 - Browse repository at this point
Copy the full SHA bc9bfc7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4fed67f - Browse repository at this point
Copy the full SHA 4fed67fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 19ee98f - Browse repository at this point
Copy the full SHA 19ee98fView commit details
Commits on Feb 10, 2019
-
Configuration menu - View commit details
-
Copy full SHA for bf2c5d3 - Browse repository at this point
Copy the full SHA bf2c5d3View commit details -
Configuration menu - View commit details
-
Copy full SHA for d0fddd3 - Browse repository at this point
Copy the full SHA d0fddd3View commit details
Commits on Feb 13, 2019
-
Configuration menu - View commit details
-
Copy full SHA for 4e5eda3 - Browse repository at this point
Copy the full SHA 4e5eda3View commit details -
check if
used_place
andmoved_place
are equal when determining if…… the move was partial
Configuration menu - View commit details
-
Copy full SHA for 96fd218 - Browse repository at this point
Copy the full SHA 96fd218View commit details -
Configuration menu - View commit details
-
Copy full SHA for 755b320 - Browse repository at this point
Copy the full SHA 755b320View commit details -
Configuration menu - View commit details
-
Copy full SHA for 283ffcf - Browse repository at this point
Copy the full SHA 283ffcfView commit details
Commits on Feb 14, 2019
-
Jethro Beekman committed
Feb 14, 2019 Configuration menu - View commit details
-
Copy full SHA for 347a42e - Browse repository at this point
Copy the full SHA 347a42eView commit details
Commits on Feb 15, 2019
-
Fix SECURITY_SQOS_PRESENT missing
if security_qos_flags(SECURITY_ANONYMOUS) is set
Configuration menu - View commit details
-
Copy full SHA for 503e74e - Browse repository at this point
Copy the full SHA 503e74eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9295f49 - Browse repository at this point
Copy the full SHA 9295f49View commit details
Commits on Feb 16, 2019
-
Configuration menu - View commit details
-
Copy full SHA for 235a6b7 - Browse repository at this point
Copy the full SHA 235a6b7View commit details -
Configuration menu - View commit details
-
Copy full SHA for bd18cc5 - Browse repository at this point
Copy the full SHA bd18cc5View commit details -
Configuration menu - View commit details
-
Copy full SHA for b2bf37a - Browse repository at this point
Copy the full SHA b2bf37aView commit details -
Configuration menu - View commit details
-
Copy full SHA for f7c4931 - Browse repository at this point
Copy the full SHA f7c4931View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7db96a3 - Browse repository at this point
Copy the full SHA 7db96a3View commit details -
Update src/librustc_mir/interpret/operand.rs
Co-Authored-By: oli-obk <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for bee3c67 - Browse repository at this point
Copy the full SHA bee3c67View commit details -
3
Configuration menu - View commit details
-
Copy full SHA for 525983a - Browse repository at this point
Copy the full SHA 525983aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 27e438a - Browse repository at this point
Copy the full SHA 27e438aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4fdeb2d - Browse repository at this point
Copy the full SHA 4fdeb2dView commit details -
2
Configuration menu - View commit details
-
Copy full SHA for 4b08533 - Browse repository at this point
Copy the full SHA 4b08533View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1fe7eb0 - Browse repository at this point
Copy the full SHA 1fe7eb0View commit details
Commits on Feb 17, 2019
-
Change
Token::interpolated_to_tokenstream()
.It is currently a method of `Token`, but it only is valid to call if `self` is a `Token::Interpolated`. This commit eliminates the possibility of misuse by changing it to an associated function that takes a `Nonterminal`, which also simplifies the call sites. This requires splitting out a new function, `nonterminal_to_string`.
Configuration menu - View commit details
-
Copy full SHA for d26bf74 - Browse repository at this point
Copy the full SHA d26bf74View commit details -
It's present within `Token::Interpolated` as an optimization, so that if a nonterminal is converted to a `TokenStream` multiple times, the first-computed value is saved and reused. But in practice it's not needed. `interpolated_to_tokenstream()` is a cold function: it's only called a few dozen times while compiling rustc itself, and a few hundred times across the entire `rustc-perf` suite. Furthermore, when it is called, it is almost always the first conversion, so no benefit is gained from it. So this commit removes `LazyTokenStream`, along with the now-unnecessary `Token::interpolated()`. As well as a significant simplification, the removal speeds things up slightly, mostly due to not having to `drop` the `LazyTokenStream` instances.
Configuration menu - View commit details
-
Copy full SHA for f8801f3 - Browse repository at this point
Copy the full SHA f8801f3View commit details -
Avoid a
clone()
intranscribe()
.The current code (expensively) clones the value within an `Rc`. This commit changes things so that the `Rc` itself is (cheaply) cloned instead, avoid some allocations. This requires converting a few `Rc` instances to `Lrc`.
Configuration menu - View commit details
-
Copy full SHA for f0d8fbd - Browse repository at this point
Copy the full SHA f0d8fbdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 82ad4f1 - Browse repository at this point
Copy the full SHA 82ad4f1View commit details -
Remove some unnecessary
into()
calls.These are probably leftovers from recent `TokenStream` simplifications.
Configuration menu - View commit details
-
Copy full SHA for 895a794 - Browse repository at this point
Copy the full SHA 895a794View commit details
Commits on Feb 18, 2019
-
Configuration menu - View commit details
-
Copy full SHA for de05548 - Browse repository at this point
Copy the full SHA de05548View commit details
Commits on Feb 20, 2019
-
Configuration menu - View commit details
-
Copy full SHA for 0651157 - Browse repository at this point
Copy the full SHA 0651157View commit details -
Configuration menu - View commit details
-
Copy full SHA for cc20ed6 - Browse repository at this point
Copy the full SHA cc20ed6View commit details -
Configuration menu - View commit details
-
Copy full SHA for f411852 - Browse repository at this point
Copy the full SHA f411852View commit details -
Turn duration consts into associated consts
Stjepan Glavina committedFeb 20, 2019 Configuration menu - View commit details
-
Copy full SHA for 8e219e7 - Browse repository at this point
Copy the full SHA 8e219e7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 02fe6a7 - Browse repository at this point
Copy the full SHA 02fe6a7View commit details -
Configuration menu - View commit details
-
Copy full SHA for b09803e - Browse repository at this point
Copy the full SHA b09803eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6464e32 - Browse repository at this point
Copy the full SHA 6464e32View commit details -
Add examples for duration constants
Stjepan Glavina committedFeb 20, 2019 Configuration menu - View commit details
-
Copy full SHA for f223c03 - Browse repository at this point
Copy the full SHA f223c03View commit details -
Allow Self::Module to be mutated.
`codegen_allocator` and `write_metadata` mutate the underlying LLVM module. As such, it makes sense for these two functions to receive a mutable reference to the module (as opposed to an immutable one).
Configuration menu - View commit details
-
Copy full SHA for 36f18f2 - Browse repository at this point
Copy the full SHA 36f18f2View commit details
Commits on Feb 21, 2019
-
Enable feature duration_constants in examples
Stjepan Glavina committedFeb 21, 2019 Configuration menu - View commit details
-
Copy full SHA for c6d24cd - Browse repository at this point
Copy the full SHA c6d24cdView commit details -
Configuration menu - View commit details
-
Copy full SHA for e5d1fa5 - Browse repository at this point
Copy the full SHA e5d1fa5View commit details -
Optimise vec![false; N] to zero-alloc
Nowadays booleans have a well-defined representation, so there is no reason not to optimise their allocation.
Configuration menu - View commit details
-
Copy full SHA for 9f58c5f - Browse repository at this point
Copy the full SHA 9f58c5fView commit details
Commits on Feb 22, 2019
-
Configuration menu - View commit details
-
Copy full SHA for bba0ea2 - Browse repository at this point
Copy the full SHA bba0ea2View commit details -
Configuration menu - View commit details
-
Copy full SHA for b5ae4d5 - Browse repository at this point
Copy the full SHA b5ae4d5View commit details -
Make target pointer-width specific variants of (very old) huge-array-…
…simple.rs test. (and now unignore the test since it shouldn't break tests of cross-compiles anymore.)
Configuration menu - View commit details
-
Copy full SHA for e555854 - Browse repository at this point
Copy the full SHA e555854View commit details -
Switch from error patterns to
//~ ERROR
markers.AFAICT, we do not have the same const-eval issues that we used to when rust-lang#23926 was filed. (Probably because of the switch to miri for const-evaluation.)
Configuration menu - View commit details
-
Copy full SHA for b72ba05 - Browse repository at this point
Copy the full SHA b72ba05View commit details -
Configuration menu - View commit details
-
Copy full SHA for cc1cd83 - Browse repository at this point
Copy the full SHA cc1cd83View commit details
Commits on Feb 23, 2019
-
Rollup merge of rust-lang#58122 - matthieu-m:range_incl_perf, r=dtolnay
RangeInclusive internal iteration performance improvement. Specialize `Iterator::try_fold` and `DoubleEndedIterator::try_rfold` to improve code generation in all internal iteration scenarios. This changes brings the performance of internal iteration with `RangeInclusive` on par with the performance of iteration with `Range`: - Single conditional jump in hot loop, - Unrolling and vectorization, - And even Closed Form substitution. Unfortunately, it only applies to internal iteration. Despite various attempts at stream-lining the implementation of `next` and `next_back`, LLVM has stubbornly refused to optimize external iteration appropriately, leaving me with a choice between: - The current implementation, for which Closed Form substitution is performed, but which uses 2 conditional jumps in the hot loop when optimization fail. - An implementation using a `is_done` boolean, which uses 1 conditional jump in the hot loop when optimization fail, allowing unrolling and vectorization, but for which Closed Form substitution fails. In the absence of any conclusive evidence as to which usecase matters most, and with no assurance that the lack of Closed Form substitution is not indicative of other optimizations being foiled, there is no way to pick one implementation over the other, and thus I defer to the statu quo as far as `next` and `next_back` are concerned.
Configuration menu - View commit details
-
Copy full SHA for b4c8dc0 - Browse repository at this point
Copy the full SHA b4c8dc0View commit details -
Rollup merge of rust-lang#58199 - clintfred:partial-move-err-msg, r=e…
…stebank Add better error message for partial move closes rust-lang#56657 r? @davidtwco
Configuration menu - View commit details
-
Copy full SHA for a34730d - Browse repository at this point
Copy the full SHA a34730dView commit details -
Rollup merge of rust-lang#58216 - pitdicker:sqos_flags, r=alexcrichton
Set secure flags when opening a named pipe on Windows Fixes rust-lang#42036, see also the previous attempt in rust-lang#44556. Whether this is correct depends on if it is somehow possible to create a symlink to a named pipe, outside the named pipe filesystem (NPFS). But as far as I can tell that should be impossible. Also fixes that `security_qos_flags(SECURITY_ANONYMOUS)` does not set the `SECURITY_SQOS_PRESENT` flag, and the incorrect documentation about the default value of `security_qos_flags`.
Configuration menu - View commit details
-
Copy full SHA for 8c66221 - Browse repository at this point
Copy the full SHA 8c66221View commit details -
Rollup merge of rust-lang#58315 - gnzlbg:returns_twice, r=alexcrichton
Implement unstable ffi_return_twice attribute This PR implements [RFC2633](rust-lang/rfcs#2633) r? @eddyb
Configuration menu - View commit details
-
Copy full SHA for 63be1a6 - Browse repository at this point
Copy the full SHA 63be1a6View commit details -
Rollup merge of rust-lang#58353 - matthewjasper:typeck-pattern-consta…
…nts, r=arielb1 Check the Self-type of inherent associated constants r? @arielb1
Configuration menu - View commit details
-
Copy full SHA for decd787 - Browse repository at this point
Copy the full SHA decd787View commit details -
Rollup merge of rust-lang#58453 - jethrogb:jb/sgx-panic-abort, r=nagisa
SGX target: fix panic = abort What is the difference between `no_mangle` and `rustc_std_internal_symbol`?
Configuration menu - View commit details
-
Copy full SHA for 949ff12 - Browse repository at this point
Copy the full SHA 949ff12View commit details -
Rollup merge of rust-lang#58454 - pitdicker:windows_stdio, r=alexcric…
…hton Refactor Windows stdio and remove stdin double buffering I was looking for something nice and small to work on, tried to tackle a few FIXME's in Windows stdio, and things grew from there. This part of the standard library contains some tricky code, and has changed over the years to handle more corner cases. It could use some refactoring and extra comments. Changes/fixes: - Made `StderrRaw` `pub(crate)`, to remove the `Write` implementations on `sys::Stderr` (used unsynchronised for panic output). - Remove the unused `Read` implementation on `sys::windows::stdin` - The `windows::stdio::Output` enum made sense when we cached the handles, but we can use simple functions like `is_console` now that we get the handle on every read/write - `write` can now calculate the number of written bytes as UTF-8 when we can't write all `u16`s. - If `write` could only write one half of a surrogate pair, attempt another write for the other because user code can't reslice in any way that would allow us to write it otherwise. - Removed the double buffering on stdin. Documentation on the unexposed `StdinRaw` says: 'This handle is not synchronized or buffered in any fashion'; which is now true. - `sys::windows::Stdin` now always only partially fills its buffer, so we can guarantee any arbitrary UTF-16 can be re-encoded without losing any data. - `sys::windows::STDIN_BUF_SIZE` is slightly larger to compensate. There should be no real change in the number of syscalls the buffered `Stdin` does. This buffer is a little larger, while the extra buffer on Stdin is gone. - `sys::windows::Stdin` now attempts to handle unpaired surrogates at its buffer boundary. - `sys::windows::Stdin` no langer allocates for its buffer, but the UTF-16 decoding still does. ### Testing I did some manual testing of reading and writing to console. The console does support UTF-16 in some sense, but doesn't supporting displaying characters outside the BMP. - compile stage 1 stdlib with a tiny value for `MAX_BUFFER_SIZE` to make it easier to catch corner cases - run a simple test program that reads on stdin, and echo's to stdout - write some lines with plenty of ASCII and emoji in a text editor - copy and paste in console to stdin - return with `\r\n\` or CTRL-Z - copy and paste in text editor - check it round-trips ----- Fixes rust-lang#23344. All but one of the suggestions in that issue are now implemented. the missing one is: > * When reading data, we require the entire set of input to be valid UTF-16. We should instead attempt to read as much of the input as possible as valid UTF-16, only returning an error for the actual invalid elements. For example if we read 10 elements, 5 of which are valid UTF-16, the 6th is bad, and then the remaining are all valid UTF-16, we should probably return the first 5 on a call to `read`, then return an error, then return the remaining on the next call to `read`. Stdin in Console mode is dealing with text directly input by a user. In my opinion getting an unpaired surrogate is quite unlikely in that case, and a valid reason to error on the entire line of input (which is probably short). Dealing with it is incompatible with an unbuffered stdin, which seems the more interesting guarantee to me.
Configuration menu - View commit details
-
Copy full SHA for 1000776 - Browse repository at this point
Copy the full SHA 1000776View commit details -
Rollup merge of rust-lang#58476 - nnethercote:rm-LazyTokenStream, r=p…
…etrochenkov Remove `LazyTokenStream`. `LazyTokenStream` was added in rust-lang#40939. Perhaps it was an effective optimization then, but no longer. This PR removes it, making the code both simpler and faster. r? @alexcrichton
Configuration menu - View commit details
-
Copy full SHA for b440487 - Browse repository at this point
Copy the full SHA b440487View commit details -
Rollup merge of rust-lang#58511 - oli-obk:const_to_op, r=RalfJung
Const to op simplification r? @RalfJung alternative to rust-lang#58486
Configuration menu - View commit details
-
Copy full SHA for 89c4253 - Browse repository at this point
Copy the full SHA 89c4253View commit details -
Rollup merge of rust-lang#58595 - stjepang:make-duration-consts-assoc…
…iated, r=oli-obk Turn duration consts into associated consts As suggested in rust-lang#57391 (comment), I'm moving `Duration` constants (`SECOND`, `MILLISECOND` and so on; currently behind unstable `duration_constants` feature) into the `impl Duration` block. cc @frewsxcv @SimonSapin
Configuration menu - View commit details
-
Copy full SHA for 70f97c9 - Browse repository at this point
Copy the full SHA 70f97c9View commit details -
Rollup merge of rust-lang#58609 - gabi-250:mutable-refs, r=oli-obk
Allow Self::Module to be mutated. This only changes `&Self::Module` to `&mut Self::Module` in a couple of places. `codegen_allocator` and `write_metadata` from `ExtraBackendMethods` mutate the underlying LLVM module. As such, it makes sense for these two functions to receive a mutable reference to the module (as opposed to an immutable one). I am trying to implement `codegen_allocator` for my backend, and I need to be able to mutate `Self::Module`: https://github.com/rust-lang/rust/blob/f66e4697ae286985ddefc53c3a047614568458bb/src/librustc_codegen_ssa/traits/backend.rs#L41 Modifying the module in `codegen_allocator`/`write_metadata` is not a problem for the LLVM backend, because [ModuleLlvm](https://github.com/rust-lang/rust/blob/master/src/librustc_codegen_llvm/lib.rs#L357) contains a raw pointer to the underlying LLVM module, so it can easily be mutated through FFI calls. I am trying to avoid interior mutability and `unsafe` as much as I can. What do you think? Does this change make sense, or is there a reason why this should stay the way it is?
Configuration menu - View commit details
-
Copy full SHA for f4b182d - Browse repository at this point
Copy the full SHA f4b182dView commit details -
Rollup merge of rust-lang#58628 - RReverser:optimise-vec-false, r=oli…
…-obk Optimise vec![false; N] to zero-alloc Nowadays booleans have a well-defined representation, so there is no reason not to optimise their allocation.
Configuration menu - View commit details
-
Copy full SHA for 89ac6cc - Browse repository at this point
Copy the full SHA 89ac6ccView commit details -
Rollup merge of rust-lang#58642 - tspiteri:intra-rustdoc-prim-method,…
… r=GuillaumeGomez rustdoc: support methods on primitives in intra-doc links Fixes rust-lang#58598.
Configuration menu - View commit details
-
Copy full SHA for c85de5c - Browse repository at this point
Copy the full SHA c85de5cView commit details -
Rollup merge of rust-lang#58643 - GuillaumeGomez:extra-variables, r=M…
…anishearth Don't generate minification variables if minification disabled If the minification is disabled, there is no sense having those variables. r? @QuietMisdreavus
Configuration menu - View commit details
-
Copy full SHA for 80ab575 - Browse repository at this point
Copy the full SHA 80ab575View commit details -
Rollup merge of rust-lang#58648 - pnkfelix:issue-23926-update-tests, …
…r=nikomatsakis Update tests to account for cross-platform testing and miri. Fix rust-lang#23926
Configuration menu - View commit details
-
Copy full SHA for b019549 - Browse repository at this point
Copy the full SHA b019549View commit details -
Rollup merge of rust-lang#58654 - estebank:underflow, r=nikomatsakis
Do not underflow after resetting unmatched braces count Fix rust-lang#58638. r? @oli-obk
Configuration menu - View commit details
-
Copy full SHA for de703e7 - Browse repository at this point
Copy the full SHA de703e7View commit details