kennytm [Sun, 3 Mar 2019 05:56:57 +0000 (13:56 +0800)]
Rollup merge of #58865 - dlrobertson:fix-varargs, r=alexreg
Fix C-variadic function printing
There is no longer a need to append the string `", ..."` to a functions
args as `...` is parsed as an argument and will appear in the functions
arguments.
bors [Sun, 3 Mar 2019 03:00:16 +0000 (03:00 +0000)]
Auto merge of #58464 - jethrogb:jb/std-test-panic-output, r=alexcrichton
Use the correct stderr when testing libstd
When compiling the unit tests for libstd, there are two copies of `std` in existence, see [lib.rs](https://github.com/rust-lang/rust/blob/919cf42/src/libstd/lib.rs#L335-L341). This means there are two copies of everything, including thread local variable definitions. Before this PR, it's possible that libtest would configure a stderr sink in one of those copies, whereas the panic logic would inspect the sink in the other copy, resulting in libtest missing the relevant panic message. This PR makes sure that when testing, the panic logic always accesses the stderr sink from “realstd”, using the same logic that libtest uses.
Dan Robertson [Sat, 2 Mar 2019 03:14:29 +0000 (03:14 +0000)]
Fix C-variadic function printing
There is no longer a need to append the string `", ..."` to a functions
args as `...` is parsed as an argument and will appear in the functions
arguments.
kennytm [Sat, 2 Mar 2019 06:55:06 +0000 (14:55 +0800)]
Rollup merge of #58730 - timvermeulen:internal_iteration, r=scottmcm
Have all methods of Filter and FilterMap use internal iteration
This PR changes `Filter::{next, next_back, count}` and `FilterMap::{next, next_back}` to all use internal iteration. The `next` and `next_back` methods are changed to directly forward to `try_for_each` and `try_rfold` respectively, using `Result` as the `Try` type. I think that's okay? Alternatively, I could change their implementations to use `LoopState` instead if there's any benefit in doing so.
bors [Sat, 2 Mar 2019 13:16:12 +0000 (13:16 +0000)]
Auto merge of #58216 - pitdicker:sqos_flags, r=alexcrichton
Set secure flags when opening a named pipe on Windows
Fixes https://github.com/rust-lang/rust/issues/42036, see also the previous attempt in https://github.com/rust-lang/rust/pull/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`.
bors [Fri, 1 Mar 2019 22:12:27 +0000 (22:12 +0000)]
Auto merge of #58800 - ehuss:update-books, r=Centril
Update edition-guide
15 commits in 419edb885ec1a98c0747b3907003d79e3e6b93a9..5f3cc2a5618700efcde3bc00799744f21fa9ad2e
2018-12-04 16:43:38 -0500 to 2019-02-27 20:11:50 -0800
- Migrate to mdbook 0.2. (rust-lang-nursery/edition-guide#152)
- Remove automatic deployment. (rust-lang-nursery/edition-guide#151)
- Fix issue with rust's linkchecker and mdbook. (rust-lang-nursery/edition-guide#147)
- Fix test now that overflowing_literals is rejected in all editions. (rust-lang-nursery/edition-guide#148)
- overflowing_literals is deny on all editions (rust-lang-nursery/edition-guide#146)
- Update for uniform_path stabilization. (rust-lang-nursery/edition-guide#141)
- Add example to rustup to show overriding to specific version (rust-lang-nursery/edition-guide#144)
- Update for anonymous-lifetime stabilization. (rust-lang-nursery/edition-guide#142)
- Add minimum Rust version for Kleene operator (rust-lang-nursery/edition-guide#137)
- Add 2018-specific changes. (rust-lang-nursery/edition-guide#130)
- aborting-on-panic.md: Typo in example config (rust-lang-nursery/edition-guide#125)
- Clarify uniform paths are not yet in Rust 2018 (rust-lang-nursery/edition-guide#124)
- update several version numbers
- Fixes outdated link (rust-lang-nursery/edition-guide#131)
- Fixed typo in transitioning page. (rust-lang-nursery/edition-guide#127)
Matthew Jasper [Wed, 27 Feb 2019 22:21:49 +0000 (22:21 +0000)]
Handle type annotations in promoted MIR correctly
Type annotations are shared between the MIR of a function and the
promoted constants for that function, so keep them in the type checker
when we check the promoted MIR.
bors [Fri, 1 Mar 2019 10:00:17 +0000 (10:00 +0000)]
Auto merge of #58631 - spastorino:place2_1, r=oli-obk
Put Local, Static and Promoted as one Base variant of Place
Related to #52708
The `Place` 2.0 representation use a `Base` variant for `Local`, `Static` and `Promoted` so we start making this change in the current `Place` to make the following steps simpler.
bors [Fri, 1 Mar 2019 01:22:15 +0000 (01:22 +0000)]
Auto merge of #58408 - alexcrichton:update-llvm, r=michaelwoerister
rustc: Update LLVM, remove dead wasm code
This commit updates the LLVM branch to the rebased version of the
upstream release/8.x branch. This includes a wasm patch which means that
the `rewrite_imports` pass in rustc is no longer needed (yay!) and we
can instead rely on `wasm-import-module`, an attribute we're already
emitting, to take care of all the work.
bors [Thu, 28 Feb 2019 15:00:25 +0000 (15:00 +0000)]
Auto merge of #57760 - dlrobertson:varargs1, r=alexreg
Support defining C compatible variadic functions
## Summary
Add support for defining C compatible variadic functions in unsafe rust with
`extern "C"` according to [RFC 2137].
## Details
### Parsing
When parsing a user defined function that is `unsafe` and `extern "C"` allow
variadic signatures and inject a "spoofed" `VaList` in the new functions
signature. This allows the user to interact with the variadic arguments via a
`VaList` instead of manually using `va_start` and `va_end` (See [RFC 2137] for
details).
### Codegen
When running codegen for a variadic function, remove the "spoofed" `VaList`
from the function signature and inject `va_start` when the arg local
references are created for the function and `va_end` on return.
## TODO
- [x] Get feedback on injecting `va_start/va_end` in MIR vs codegen
- [x] Properly inject `va_end` - It seems like it should be possible to inject
`va_end` on the `TerminatorKind::Return`. I just need to figure out how
to get the `LocalRef` here.
- [x] Properly call Rust defined C variadic functions in Rust - The spoofed
`VaList` causes problems here.
Alex Crichton [Wed, 27 Feb 2019 16:03:54 +0000 (08:03 -0800)]
Whitelist containers that allow older toolchains
We'll use this as a temporary measure to get an LLVM update landed, but
we'll have to go through and update images later to make sure they've
got the right toolchains.
Dan Robertson [Fri, 8 Feb 2019 17:30:42 +0000 (17:30 +0000)]
Rename variadic to c_variadic
Function signatures with the `variadic` member set are actually
C-variadic functions. Make this a little more explicit by renaming the
`variadic` boolean value, `c_variadic`.
Dan Robertson [Sat, 2 Feb 2019 16:34:09 +0000 (16:34 +0000)]
Refactor FunctionCx::codgen_terminator
- Move closures defined in codegen_terminator into a separate helper
structure and implementation.
- Create helper functions for each of the complex match arms on the
terminators kind in codegen_terminator.