]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAuto merge of #56624 - RalfJung:miri, r=oli-obk
bors [Mon, 10 Dec 2018 09:58:22 +0000 (09:58 +0000)]
Auto merge of #56624 - RalfJung:miri, r=oli-obk

update miri

r? @oli-obk

5 years agoAuto merge of #56369 - nnethercote:rm-Delimited, r=petrochenkov
bors [Mon, 10 Dec 2018 03:33:17 +0000 (03:33 +0000)]
Auto merge of #56369 - nnethercote:rm-Delimited, r=petrochenkov

Remove `tokenstream::Delimited`.

Because it's an extra type layer that doesn't really help; in a couple
of places it actively gets in the way, and overall removing it makes the
code nicer. It does, however, move `tokenstream::TokenTree` further away
from the `TokenTree` in `quote.rs`.

More importantly, this change reduces the size of `TokenStream` from 48
bytes to 40 bytes on x86-64, which is enough to slightly reduce
instruction counts on numerous benchmarks, the best by 1.5%.

Note that `open_tt` and `close_tt` have gone from being methods on
`Delimited` to associated methods of `TokenTree`.

5 years agoRemove `tokenstream::Delimited`.
Nicholas Nethercote [Thu, 29 Nov 2018 23:02:04 +0000 (10:02 +1100)]
Remove `tokenstream::Delimited`.

Because it's an extra type layer that doesn't really help; in a couple
of places it actively gets in the way, and overall removing it makes the
code nicer. It does, however, move `tokenstream::TokenTree` further away
from the `TokenTree` in `quote.rs`.

More importantly, this change reduces the size of `TokenStream` from 48
bytes to 40 bytes on x86-64, which is enough to slightly reduce
instruction counts on numerous benchmarks, the best by 1.5%.

Note that `open_tt` and `close_tt` have gone from being methods on
`Delimited` to associated methods of `TokenTree`.

5 years agoAuto merge of #56269 - nnethercote:_match-Matrix-SmallVec, r=simulacrum
bors [Mon, 10 Dec 2018 01:08:05 +0000 (01:08 +0000)]
Auto merge of #56269 - nnethercote:_match-Matrix-SmallVec, r=simulacrum

Use a `SmallVec` within `_match::Matrix`.

This avoids allocations.

5 years agoUse a `SmallVec` within `_match::Matrix`.
Nicholas Nethercote [Wed, 28 Nov 2018 02:38:46 +0000 (13:38 +1100)]
Use a `SmallVec` within `_match::Matrix`.

This commit also fixes up lifetimes a bit:

- Renames `'a` as `'p` when used with `Matrix` and `Pattern`, for
  consistency.

- Removes some unnecessary `'p` lifetimes on some function arguments.

- Adds some missing lifetime parameters.

5 years agoAuto merge of #56463 - ljedrz:slice_concat_join, r=nikic
bors [Sun, 9 Dec 2018 22:39:44 +0000 (22:39 +0000)]
Auto merge of #56463 - ljedrz:slice_concat_join, r=nikic

slice: tweak concat & join

- use `sum` instead of `fold` (readability)
- adjust the capacity for `join` - the number of separators is `n - 1`, not `n`; proof:
```
fn main() {
    let a = [[1, 2], [4, 5]];
    let v = a.join(&3);

    assert_ne!(v.len(), v.capacity()); // len is 5, capacity is 6
}
```

5 years agoUpgrade `smallvec` to 0.6.7 and use the new `may_dangle` feature.
Nicholas Nethercote [Wed, 28 Nov 2018 21:52:22 +0000 (08:52 +1100)]
Upgrade `smallvec` to 0.6.7 and use the new `may_dangle` feature.

5 years agoAuto merge of #56444 - petrochenkov:uifull, r=davidtwco
bors [Sun, 9 Dec 2018 18:49:12 +0000 (18:49 +0000)]
Auto merge of #56444 - petrochenkov:uifull, r=davidtwco

Move compile-fail-fulldeps tests to UI

cc https://github.com/rust-lang/rust/issues/53353

r? @davidtwco

5 years agoFix rebase + Add missing `// force-host`
Vadim Petrochenkov [Fri, 7 Dec 2018 21:53:15 +0000 (00:53 +0300)]
Fix rebase + Add missing `// force-host`

5 years agoRemove compile-fail-fulldeps test suite
Vadim Petrochenkov [Sun, 2 Dec 2018 20:07:22 +0000 (23:07 +0300)]
Remove compile-fail-fulldeps test suite

5 years agoMove some tests from ui-fulldeps to ui
Vadim Petrochenkov [Sun, 2 Dec 2018 19:59:50 +0000 (22:59 +0300)]
Move some tests from ui-fulldeps to ui

5 years agoMove compile-fail-fulldeps tests to ui-fulldeps
Vadim Petrochenkov [Sun, 2 Dec 2018 19:42:43 +0000 (22:42 +0300)]
Move compile-fail-fulldeps tests to ui-fulldeps

5 years agoMove former compile-fail-fulldeps tests to ui
Vadim Petrochenkov [Sun, 2 Dec 2018 19:27:37 +0000 (22:27 +0300)]
Move former compile-fail-fulldeps tests to ui

5 years agoAuto merge of #56644 - jens1o:patch-1, r=pietroalbini
bors [Sun, 9 Dec 2018 16:15:32 +0000 (16:15 +0000)]
Auto merge of #56644 - jens1o:patch-1, r=pietroalbini

Fix security link in CONTRIBUTING to its new place

avoiding an 404

5 years agoFix security link in CONTRIBUTING to its new place
Jens Hausdorf [Sun, 9 Dec 2018 14:25:23 +0000 (15:25 +0100)]
Fix security link in CONTRIBUTING to its new place

avoiding an 404

5 years agoAuto merge of #56631 - matthiaskrgr:clippy, r=nikic
bors [Sun, 9 Dec 2018 11:56:32 +0000 (11:56 +0000)]
Auto merge of #56631 - matthiaskrgr:clippy, r=nikic

submodules: update clippy from 1df5766c to a3c77f6a

fixes clippy toolstate

Changes:
````
s/rustfmt-preview/rustfmt/
Swap if branches
Fix c_void false positive caused by libc refactoring
rustup https://github.com/rust-lang/rust/pull/56502 ( .hir -> .hir() )
typo: emum → enum
Fix format.
Add sysroot gettinh code to dogfood tests.
Add sysroot getting code to tests.
Don't try to determine sysroot. rustc_driver will use default value.
Fix suggestion for multiple derefs
Fix `clone_on_copy` not detecting derefs sometimes
````
r? @oli-obk

5 years agoAuto merge of #56630 - sinkuu:core_iter, r=kennytm
bors [Sun, 9 Dec 2018 00:18:34 +0000 (00:18 +0000)]
Auto merge of #56630 - sinkuu:core_iter, r=kennytm

Resolve FIXME in libcore/iter/mod.rs

and makes a few improvements.

5 years agoAuto merge of #56615 - integer32llc:update-book, r=GuillaumeGomez
bors [Sat, 8 Dec 2018 22:00:09 +0000 (22:00 +0000)]
Auto merge of #56615 - integer32llc:update-book, r=GuillaumeGomez

Update the book to fix some edition-related bugs

I'd love to have this included in a point release if one happens, but the changes aren't worth doing a point release on their own IMO. I'd definitely like to see this backported to beta.

The most urgent changes included here are:

- Chapter 19.6, on macros (including the macro changes that just stabilized), [is cut off](https://github.com/rust-lang/book/issues/1668) because of an ill-placed newline in a comment that [pulldown-cmark interprets incorrectly](https://github.com/raphlinus/pulldown-cmark/issues/124).
- [The `Cargo.toml` shown in the Guessing Game example in Chapter 2 (and one in Chapter 14) doesn't have `edition="2018"`](https://github.com/rust-lang/book/pull/1671), which can be confusing depending on whether the readers have it in theirs or not, think they should remove it if they have it, and the rest of the chapter assumes it's there and the code doesn't compile if you don't have it.
- The redirects implemented as part of only shipping the 2018 edition of the book sometimes lead to [having to click through 2 redirect pages](https://github.com/rust-lang/book/pull/1667) when it could be just one.

There are other small corrections included that were made since the last time the book was updated, but those aren't urgent.

cc @steveklabnik

5 years agoAuto merge of #56616 - estebank:issue-56539, r=davidtwco
bors [Sat, 8 Dec 2018 19:34:43 +0000 (19:34 +0000)]
Auto merge of #56616 - estebank:issue-56539, r=davidtwco

Encode `TraitAlias` as if they were `Trait`

Fix #56539.

5 years agoAuto merge of #56632 - Eijebong:synup, r=Mark-Simulacrum
bors [Sat, 8 Dec 2018 17:06:19 +0000 (17:06 +0000)]
Auto merge of #56632 - Eijebong:synup, r=Mark-Simulacrum

Reduce the number of syn versions compiled from 4 to 2

The last remaining one comes from mdbook. Unfortunately updating it
breaks everything

5 years agoDon't call size_hint of underlying iterator needlessly
Shotaro Yamada [Sat, 8 Dec 2018 11:16:36 +0000 (20:16 +0900)]
Don't call size_hint of underlying iterator needlessly

5 years agoResolve FIXME and cleanup
Shotaro Yamada [Sat, 8 Dec 2018 11:15:49 +0000 (20:15 +0900)]
Resolve FIXME and cleanup

5 years agoOverride Cycle::try_fold
Shotaro Yamada [Sat, 8 Dec 2018 11:09:44 +0000 (20:09 +0900)]
Override Cycle::try_fold

 name                            old ns/iter  new ns/iter  diff ns/iter   diff %  speedup
 iter::bench_cycle_take_ref_sum  927,152      927,194                42    0.00%   x 1.00
 iter::bench_cycle_take_sum      938,129      603,492          -334,637  -35.67%   x 1.55

5 years agoReduce the numbers of syn versions compiled from 4 to 2
Bastien Orivel [Sat, 8 Dec 2018 14:11:47 +0000 (15:11 +0100)]
Reduce the numbers of syn versions compiled from 4 to 2

The last remaining one comes from mdbook. Unfortunately updating it
breaks everything

5 years agosubmodules: update clippy from 1df5766c to a3c77f6a
Matthias Krüger [Sat, 8 Dec 2018 14:02:12 +0000 (15:02 +0100)]
submodules: update clippy from 1df5766c to a3c77f6a

Changes:
````
s/rustfmt-preview/rustfmt/
Swap if branches
Fix c_void false positive caused by libc refactoring
rustup https://github.com/rust-lang/rust/pull/56502 ( .hir -> .hir() )
typo: emum → enum
Fix format.
Add sysroot gettinh code to dogfood tests.
Add sysroot getting code to tests.
Don't try to determine sysroot. rustc_driver will use default value.
Fix suggestion for multiple derefs
Fix `clone_on_copy` not detecting derefs sometimes
````

5 years agoupdate miri
Ralf Jung [Sat, 8 Dec 2018 10:09:02 +0000 (11:09 +0100)]
update miri

5 years agoAuto merge of #56623 - Centril:rollup, r=Centril
bors [Sat, 8 Dec 2018 09:56:32 +0000 (09:56 +0000)]
Auto merge of #56623 - Centril:rollup, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #56248 (Suggest an appropriate token when encountering `pub Ident<'a>`)
 - #56597 (Improve the usage message for `-Z dump-mir`.)
 - #56599 (codegen: Fix va_list - aarch64 iOS/Windows)
 - #56602 (Fix the just-introduced ptr::hash docs)
 - #56620 (resolve: Reduce some clutter in import ambiguity errors)
 - #56621 (Add missing comma in Generators)

Failed merges:

r? @ghost

5 years agoRollup merge of #56621 - Morganamilo:fix-generators-comma, r=Centril
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:50 +0000 (08:43 +0100)]
Rollup merge of #56621 - Morganamilo:fix-generators-comma, r=Centril

Add missing comma in Generators

5 years agoRollup merge of #56620 - petrochenkov:noclutter, r=estebank
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:49 +0000 (08:43 +0100)]
Rollup merge of #56620 - petrochenkov:noclutter, r=estebank

resolve: Reduce some clutter in import ambiguity errors

Noticed in https://www.reddit.com/r/rust/comments/a3pyrw/announcing_rust_131_and_rust_2018/eb8alhi/.
The first error is distracting, but unnecessary, it's a *consequence* of the ambiguity error and appears because one of the ambiguous `actix` modules (unsurprisingly) doesn't have the expected name in it.

5 years agoRollup merge of #56602 - dwijnand:fix-ptr-hash-docs, r=Centril
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:48 +0000 (08:43 +0100)]
Rollup merge of #56602 - dwijnand:fix-ptr-hash-docs, r=Centril

Fix the just-introduced ptr::hash docs

Follow-up to #56250.

5 years agoRollup merge of #56599 - dlrobertson:fix_va_arg, r=eddyb
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:47 +0000 (08:43 +0100)]
Rollup merge of #56599 - dlrobertson:fix_va_arg, r=eddyb

codegen: Fix va_list - aarch64 iOS/Windows

## Summary

Fix code generated for `VaList` on Aarch64 iOS/Windows.

## Details

According to the [Apple - ARM64 Function Calling Conventions]:

> ... the type va_list is an alias for char * rather than for the struct
> type specified in the generic PCS.

The current implementation uses the generic Aarch64 structure for `VaList`
for Aarch64 iOS. Switch to using the `char *` variant of the `VaList`
and use the corresponding `emit_ptr_va_arg` for the `va_arg` intrinsic.

Windows always uses the `char *` variant of the `VaList`. Update the `va_arg`
intrinsic to use `emit_ptr_va_arg`.

[Apple - ARM64 Function Calling Conventions]: https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

5 years agoRollup merge of #56597 - vext01:dump-mir-usage, r=wesleywiser
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:45 +0000 (08:43 +0100)]
Rollup merge of #56597 - vext01:dump-mir-usage, r=wesleywiser

Improve the usage message for `-Z dump-mir`.

Ouput now looks like this:
```
$ rustc -Z help
...
    -Z               arg-align-attributes -- emit align metadata for reference arguments
    -Z                       dump-mir=val -- dump MIR state to file.
        `val` is used to select which passes and functions to dump. For example:
        `all` matches all passes and functions,
        `foo` matches all passes for functions whose name contains 'foo',
        `foo & ConstProp` only the 'ConstProp' pass for function names containing 'foo',
        `foo | bar` all passes for function names containing 'foo' or 'bar'.
    -Z                   dump-mir-dir=val -- the directory the MIR is dumped into
...
```

Fixes #56558

5 years agoRollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:43 +0000 (08:43 +0100)]
Rollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov

Suggest an appropriate token when encountering `pub Ident<'a>`

Fix #55403. Follow up to #45997.

5 years agoAuto merge of #56583 - RalfJung:vergen, r=oli-obk
bors [Sat, 8 Dec 2018 07:36:15 +0000 (07:36 +0000)]
Auto merge of #56583 - RalfJung:vergen, r=oli-obk

update vergen

Fixes https://github.com/rust-lang/rust/issues/56576

r? @oli-obk

5 years agoAdd missing comma in Generators
morganamilo [Sat, 8 Dec 2018 04:13:18 +0000 (04:13 +0000)]
Add missing comma in Generators

5 years agoAuto merge of #56578 - alexreg:cosmetic-1, r=alexreg
bors [Sat, 8 Dec 2018 03:50:16 +0000 (03:50 +0000)]
Auto merge of #56578 - alexreg:cosmetic-1, r=alexreg

Various minor/cosmetic improvements to code

r? @Centril 😄

5 years agoFixed nll stderr file.
Alexander Regueiro [Sat, 8 Dec 2018 03:16:39 +0000 (03:16 +0000)]
Fixed nll stderr file.

5 years agoresolve: Reduce some clutter in import ambiguity errors
Vadim Petrochenkov [Sat, 8 Dec 2018 01:19:29 +0000 (04:19 +0300)]
resolve: Reduce some clutter in import ambiguity errors

5 years agoFixed line numbers in stderr file.
Alexander Regueiro [Fri, 7 Dec 2018 20:46:10 +0000 (20:46 +0000)]
Fixed line numbers in stderr file.

5 years agoFixed test stderr files.
Alexander Regueiro [Fri, 7 Dec 2018 17:51:18 +0000 (17:51 +0000)]
Fixed test stderr files.

5 years agoFixed incorrect reference to issue #23121.
Alexander Regueiro [Fri, 7 Dec 2018 02:31:02 +0000 (02:31 +0000)]
Fixed incorrect reference to issue #23121.

5 years agoFixed more imports and variable names.
Alexander Regueiro [Fri, 7 Dec 2018 02:39:33 +0000 (02:39 +0000)]
Fixed more imports and variable names.

5 years agoRe-added accidentally-removed imports.
Alexander Regueiro [Fri, 7 Dec 2018 01:40:42 +0000 (01:40 +0000)]
Re-added accidentally-removed imports.

5 years agoVarious minor/cosmetic improvements to code
Alexander Regueiro [Tue, 27 Nov 2018 02:59:49 +0000 (02:59 +0000)]
Various minor/cosmetic improvements to code

5 years agoAuto merge of #56258 - euclio:fs-read-write, r=euclio
bors [Fri, 7 Dec 2018 23:26:14 +0000 (23:26 +0000)]
Auto merge of #56258 - euclio:fs-read-write, r=euclio

use top level `fs` functions where appropriate

This commit replaces many usages of `File::open` and reading or writing
with `fs::read_to_string`, `fs::read` and `fs::write`. This reduces code
complexity, and will improve performance for most reads, since the
functions allocate the buffer to be the size of the file.

I believe that this commit will not impact behavior in any way, so some
matches will check the error kind in case the file was not valid UTF-8.
Some of these cases may not actually care about the error.

5 years agocodegen: Fix va_list - aaarch64 iOS/Windows
Dan Robertson [Wed, 5 Dec 2018 02:44:08 +0000 (02:44 +0000)]
codegen: Fix va_list - aaarch64 iOS/Windows

According to the Apple developer docs:

> The type va_list is an alias for char * rather than for the struct
> type specified in the generic PCS.

The current implementation uses the generic Aarch64 structure for VaList
for Aarch64 iOS.

Windows always uses the char * variant of the va_list.

5 years agoEncode `TraitAlias` as if they were `Trait`
Esteban Küber [Fri, 7 Dec 2018 22:52:44 +0000 (14:52 -0800)]
Encode `TraitAlias` as if they were `Trait`

5 years agoUpdate the book to fix some edition-related bugs
Carol (Nichols || Goulding) [Fri, 7 Dec 2018 22:43:00 +0000 (17:43 -0500)]
Update the book to fix some edition-related bugs

5 years agoAuto merge of #56502 - Zoxc:hir-func, r=eddyb
bors [Fri, 7 Dec 2018 20:04:06 +0000 (20:04 +0000)]
Auto merge of #56502 - Zoxc:hir-func, r=eddyb

Use a function to access the Hir map to be able to turn it into a query later

r? @eddyb

5 years agouse top level `fs` functions where appropriate
Andy Russell [Fri, 16 Nov 2018 21:22:06 +0000 (16:22 -0500)]
use top level `fs` functions where appropriate

This commit replaces many usages of `File::open` and reading or writing
with `fs::read_to_string`, `fs::read` and `fs::write`. This reduces code
complexity, and will improve performance for most reads, since the
functions allocate the buffer to be the size of the file.

I believe that this commit will not impact behavior in any way, so some
matches will check the error kind in case the file was not valid UTF-8.
Some of these cases may not actually care about the error.

5 years agoAuto merge of #56460 - davidtwco:issue-55850, r=pnkfelix
bors [Fri, 7 Dec 2018 17:37:44 +0000 (17:37 +0000)]
Auto merge of #56460 - davidtwco:issue-55850, r=pnkfelix

Fix ICE with generators and NLL

Fix #55850.

This PR stops an ICE in #55850 by not panicking when a region cannot be named. However, this PR does not (yet) fix the underlying issue that the correct name for the test case provided for the issue (in this instance, `'a`) was not found.

This PR also lays a little bit of groundwork by categorizing yields separately from returns so that region naming can be specialized for this case.

r? @pnkfelix

5 years agoupdate vergen
Ralf Jung [Fri, 7 Dec 2018 09:12:01 +0000 (10:12 +0100)]
update vergen

5 years agogrammar
Dale Wijnand [Fri, 7 Dec 2018 16:34:53 +0000 (17:34 +0100)]
grammar

5 years agoFix the just-introduced ptr::hash docs
Dale Wijnand [Fri, 7 Dec 2018 16:33:32 +0000 (17:33 +0100)]
Fix the just-introduced ptr::hash docs

5 years agoAuto merge of #56566 - ljedrz:fix_clippy_errors, r=cramertj
bors [Fri, 7 Dec 2018 15:21:18 +0000 (15:21 +0000)]
Auto merge of #56566 - ljedrz:fix_clippy_errors, r=cramertj

codegen_utils, driver: fix clippy errors

- remove a superfluous conversion
- remove an explicit `return`
- rename `MetadataOnlyCodegenBackend::new` to `::boxed`
- single-arm `match` > `if let`

5 years agoImprove the usage message for `-Z dump-mir`.
Edd Barrett [Fri, 7 Dec 2018 14:48:16 +0000 (14:48 +0000)]
Improve the usage message for `-Z dump-mir`.

5 years agoFix ICE in region naming.
David Wood [Mon, 3 Dec 2018 13:13:28 +0000 (14:13 +0100)]
Fix ICE in region naming.

This commit puts a fix in place for the ICE in region naming code so
that it doesn't break the compiler. However, this results in the
diagnostic being poorer as the borrow explanation that was causing the
ICE is not being added - this should be fixed as a follow-up.

5 years agoIntroduce constraint category for yields.
David Wood [Mon, 3 Dec 2018 13:11:53 +0000 (14:11 +0100)]
Introduce constraint category for yields.

This commit adds a new `ConstraintCategory` for yield points - this
allows for differentiation between a normal return and a yield in the
diagnostics.

5 years agoAuto merge of #56487 - nikic:discard-modules-earlier, r=alexcrichton
bors [Fri, 7 Dec 2018 12:18:19 +0000 (12:18 +0000)]
Auto merge of #56487 - nikic:discard-modules-earlier, r=alexcrichton

Discard LLVM modules earlier when performing ThinLTO

Currently ThinLTO is performed by first compiling all modules (and keeping them in memory), and then serializing them into ThinLTO buffers in a separate, synchronized step. Modules are later read back from ThinLTO buffers when running the ThinLTO optimization pipeline.

We can also find the following comment in `lto.rs`:

        // FIXME: right now, like with fat LTO, we serialize all in-memory
        //        modules before working with them and ThinLTO. We really
        //        shouldn't do this, however, and instead figure out how to
        //        extract a summary from an in-memory module and then merge that
        //        into the global index. It turns out that this loop is by far
        //        the most expensive portion of this small bit of global
        //        analysis!

I don't think that what is suggested here is the right approach: One of the primary benefits of using ThinLTO over ordinary LTO is that it's not necessary to keep all the modules (merged or not) in memory for the duration of the linking step.

However, we currently don't really make use of this (at least for crate-local ThinLTO), because we keep all modules in memory until the start of the LTO step. This PR changes the implementation to instead perform the serialization into ThinLTO buffers directly after the initial optimization step.

Most of the changes here are plumbing to separate out fat and thin lto handling in `write.rs`, as these now use different intermediate artifacts. For fat lto this will be in-memory modules, for thin lto it will be ThinLTO buffers.

r? @alexcrichton

5 years agoAuto merge of #56581 - kennytm:rollup, r=kennytm
bors [Fri, 7 Dec 2018 08:46:45 +0000 (08:46 +0000)]
Auto merge of #56581 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

Successful merges:

 - #56000 (Add Armv8-M Mainline targets)
 - #56250 (Introduce ptr::hash for references)
 - #56434 (Improve query cycle errors for parallel queries)
 - #56516 (Replace usages of `..i + 1` ranges with `..=i`.)
 - #56555 (Send textual profile data to stderr, not stdout)
 - #56561 (Fix bug in from_key_hashed_nocheck)
 - #56574 (Fix a stutter in the docs for slice::exact_chunks)

Failed merges:

r? @ghost

5 years agoAuto merge of #56066 - jethrogb:jb/sgx-target, r=alexcrichton
bors [Fri, 7 Dec 2018 06:34:16 +0000 (06:34 +0000)]
Auto merge of #56066 - jethrogb:jb/sgx-target, r=alexcrichton

Add SGX target to std and dependencies

This PR adds tier 3 `std` support for the `x86_64-fortanix-unknown-sgx` target.

### Background

Intel Software Guard Extensions (SGX) is an instruction set extension for x86 that allows executing code in fully-isolated *secure enclaves*. These enclaves reside in the address space of a regular user process, but access to the enclave's address space from outside (by e.g. the OS or a hypervisor) is blocked.

From within such enclaves, there is no access to the operating system or hardware peripherals. In order to communicate with the outside world, enclaves require an untrusted “helper” program that runs as a normal user process.

SGX is **not** a sandboxing technology: code inside SGX has full access to all memory belonging to the process it is running in.

### Overview

The Fortanix SGX ABI (compiler target `x86_64-fortanix-unknown-sgx`) is an interface for Intel SGX enclaves. It is a small yet functional interface suitable for writing larger enclaves. In contrast to other enclave interfaces, this interface is primarly designed for running entire applications in an enclave. The interface has been under development since early 2016 and builds on Fortanix's significant experience running enclaves in production.

Also unlike other enclave interfaces, this is the only implementation of an enclave interface that is nearly pure-Rust (except for the entry point code).

A description of the ABI may be found at https://docs.rs/fortanix-sgx-abi/ and https://github.com/fortanix/rust-sgx/blob/master/doc/FORTANIX-SGX-ABI.md.

The following parts of `std` are not supported and most operations will error when used:

* `std::fs`
* `std::process`
* `std::net::UdpSocket`

### Future plans

A separate PR (https://github.com/rust-lang/rust/pull/56067/) will add the SGX target to the rust compiler. In the very near future, I expect to upgrade this target to tier 2.

This PR is just the initial support to make things mostly work. There will be more work coming in the future, for example to add interfaces to the native SGX primitives, implement unwinding, optimize usercalls.

UDP and some form of filesystem support may be added in the future, but process support seems unlikely given the platform's constraints.

### Testing build

1. Install [Xargo](https://github.com/japaric/xargo): `cargo install xargo`
2. Create a new Cargo project, for example: `cargo new --bin sgxtest`.
3. Put the following in a file `Xargo.toml` next to your `Cargo.toml`:

```toml
[target.x86_64-fortanix-unknown-sgx.dependencies.std]
git = "https://github.com/jethrogb/rust"
branch = "jb/sgx-target"
```

NB. This can be quite slow. Instead, you can have a local checkout of that branch and use `path = "/path/to/rust/src/libstd"` instead. Don't forget to checkout the submodules too!

4. Build:

```sh
xargo build --target x86_64-fortanix-unknown-sgx
```

### Testing execution

Execution is currently only supported on x86-64 Linux, but support for Windows is planned.

1. Install pre-requisites. In order to test execution, you'll need to have a CPU with Intel SGX support. SGX support needs to be enabled in the BIOS. You'll also need to install the SGX driver and Platform Software (PSW) from [Intel](https://01.org/intel-software-guard-extensions).

2. Install toolchain, executor:
```sh
cargo install sgxs-tools --version 0.6.0-rc1
cargo install fortanix-sgx-tools --version 0.1.0-rc1
```

3. Start the enclave:

```sh
ftxsgx-elf2sgxs target/x86_64-fortanix-unknown-sgx/debug/sgxtest --heap-size 0x20000 --ssaframesize 1 --stack-size 0x20000 --threads 1 --debug
sgxs-append -i target/x86_64-fortanix-unknown-sgx/debug/sgxtest.sgxs
ftxsgx-runner target/x86_64-fortanix-unknown-sgx/debug/sgxtest.sgxs
```

5 years agoSGX target: implement command-line arguments and environment variables
Jethro Beekman [Fri, 21 Sep 2018 01:01:10 +0000 (18:01 -0700)]
SGX target: implement command-line arguments and environment variables

5 years agoSGX target: implement time
Jethro Beekman [Wed, 19 Sep 2018 23:48:04 +0000 (16:48 -0700)]
SGX target: implement time

5 years agoSGX target: implement networking
Jethro Beekman [Wed, 19 Sep 2018 22:59:06 +0000 (15:59 -0700)]
SGX target: implement networking

5 years agoSGX target: implement streams
Jethro Beekman [Mon, 17 Sep 2018 23:22:59 +0000 (16:22 -0700)]
SGX target: implement streams

5 years agoSGX target: implement synchronization primitives and threading
Jethro Beekman [Wed, 5 Sep 2018 23:19:35 +0000 (16:19 -0700)]
SGX target: implement synchronization primitives and threading

5 years agoSGX target: implement user memory management
Jethro Beekman [Wed, 5 Sep 2018 23:18:53 +0000 (16:18 -0700)]
SGX target: implement user memory management

5 years agoSGX target: add thread local storage
Jethro Beekman [Tue, 28 Aug 2018 04:40:08 +0000 (21:40 -0700)]
SGX target: add thread local storage

5 years agoAdd x86_64-fortanix-unknown-sgx target to libstd and dependencies
Jethro Beekman [Tue, 28 Aug 2018 04:33:26 +0000 (21:33 -0700)]
Add x86_64-fortanix-unknown-sgx target to libstd and dependencies

The files src/libstd/sys/sgx/*.rs are mostly copied/adapted from
the wasm target.

This also updates the dlmalloc submodule to the very latest version.

5 years agoRollup merge of #56574 - cbarrick:master, r=varkor
kennytm [Fri, 7 Dec 2018 04:42:36 +0000 (12:42 +0800)]
Rollup merge of #56574 - cbarrick:master, r=varkor

Fix a stutter in the docs for slice::exact_chunks

Before this change, the docs for `slice::exact_chunks` reads like this:

> See `chunks` for a variant of this iterator that also returns the remainder as a smaller chunk, and `rchunks_exact` for the same iterator but starting at the end of the slice of the slice.

Notice that stutter at the end? This commit fixes it.

5 years agoRollup merge of #56561 - Zoxc:too-raw, r=Gankro
kennytm [Fri, 7 Dec 2018 04:42:35 +0000 (12:42 +0800)]
Rollup merge of #56561 - Zoxc:too-raw, r=Gankro

Fix bug in from_key_hashed_nocheck

5 years agoRollup merge of #56555 - Mark-Simulacrum:stderr-profile, r=wesleywiser
kennytm [Fri, 7 Dec 2018 04:42:34 +0000 (12:42 +0800)]
Rollup merge of #56555 - Mark-Simulacrum:stderr-profile, r=wesleywiser

Send textual profile data to stderr, not stdout

This makes it possible to run with RUSTFLAGS="-Zself-profile" without
having to redirect compiler output; otherwise Cargo will error out due
to non-empty compiler stdout.

r? @wesleywiser

5 years agoRollup merge of #56516 - frewsxcv:frewsxcv-eq, r=Mark-Simulacrum
kennytm [Fri, 7 Dec 2018 04:42:32 +0000 (12:42 +0800)]
Rollup merge of #56516 - frewsxcv:frewsxcv-eq, r=Mark-Simulacrum

Replace usages of `..i + 1` ranges with `..=i`.

Before this change we were using old computer code techniques. After this change we use the new and improved computer code techniques.

5 years agoRollup merge of #56434 - Zoxc:par-tests, r=michaelwoerister
kennytm [Fri, 7 Dec 2018 04:42:31 +0000 (12:42 +0800)]
Rollup merge of #56434 - Zoxc:par-tests, r=michaelwoerister

Improve query cycle errors for parallel queries

r? @michaelwoerister

5 years agoRollup merge of #56250 - dwijnand:ptr-hash, r=alexcrichton
kennytm [Fri, 7 Dec 2018 04:42:30 +0000 (12:42 +0800)]
Rollup merge of #56250 - dwijnand:ptr-hash, r=alexcrichton

Introduce ptr::hash for references

The RHS is what I used, which wasn't as convenient as `ptr::eq`, so I wondered: should `ptr::hash` exist?

My first Rust PR, so I'm going to need some guidance. :)

5 years agoRollup merge of #56000 - hug-dev:armv8m.main, r=alexcrichton
kennytm [Fri, 7 Dec 2018 04:42:29 +0000 (12:42 +0800)]
Rollup merge of #56000 - hug-dev:armv8m.main, r=alexcrichton

Add Armv8-M Mainline targets

This commit enables the Armv8-M Mainline architecture profile.
It adds two targets:
  - `thumbv8m.main-none-eabi`
  - `thumbv8m.main-none-eabihf`

The second one uses the Floating Point Unit for floating point
operations. It mainly targets the Cortex-M33 processor, which
can have the optional Floating Point Unit extension.

It follows #55041 which does it for Baseline. I will rebase this branch on top of it when it is merged to not create conflicts as we have some files in common. To make it work, it still relies on the Cargo change to be merged (accepting "." in target names, rust-lang/cargo#6255).

The goal would also be to add this target in the CI so that the `core` library is available for everybody. To do this, some changes will be needed to compile successfully the needed libraries:

* `cc-rs` needs to be updated to allow compiling C code for Armv8-M architectures profiles. It is only a few lines to add [here](https://github.com/alexcrichton/cc-rs/blob/a76611ad9836fa8c44fa8220a1d2a96dd3b7d4b6/src/lib.rs#L1299).
* Some assembly files in `builtins` in `compiler-rt` were not assembling for Armv8-M Mainline. I sent changes [upstream](https://reviews.llvm.org/D51854) to that project to fix that. The Rust version of `compiler-rt` will have to be updated to contain [that commit](https://github.com/llvm-mirror/compiler-rt/commit/a34cdf8bb498dc2f5dd415542f8e83261d2eeb88).

I tested it using the [Musca-A Test Chip board](https://developer.arm.com/products/system-design/development-boards/iot-test-chips-and-boards/musca-a-test-chip-board) but more intensively on the [Armv8-M FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms) (emulation platform). I am going to try to release my test code soon, once I tidy it up :+1:

5 years agoAuto merge of #54271 - petrochenkov:nolegder, r=eddyb,alexcrichton
bors [Fri, 7 Dec 2018 00:48:00 +0000 (00:48 +0000)]
Auto merge of #54271 - petrochenkov:nolegder, r=eddyb,alexcrichton

Unsupport `#[derive(Trait)]` sugar for `#[derive_Trait]` legacy plugin attributes

This is a long deprecated unstable feature that doesn't mesh well with regular resolution/expansion.

How to fix broken code:
- The recommended way is to migrate to stable procedural macros - derives or attributes (https://doc.rust-lang.org/nightly/book/first-edition/procedural-macros.html).
- If that's not possible right now for some reason, you can keep code working with a simple mechanical replacement `#[derive(Legacy)]` -> `#[derive_Legacy]`.

Closes https://github.com/rust-lang/rust/issues/29644

r? @ghost

5 years agoUnsupport `#[derive(Trait)]` sugar for `#[derive_Trait]` legacy plugin attributes
Vadim Petrochenkov [Sun, 16 Sep 2018 09:20:47 +0000 (12:20 +0300)]
Unsupport `#[derive(Trait)]` sugar for `#[derive_Trait]` legacy plugin attributes

5 years agoAuto merge of #55318 - Aaron1011:fix/final-auto-trait-resolve, r=nikomatsakis
bors [Thu, 6 Dec 2018 22:23:24 +0000 (22:23 +0000)]
Auto merge of #55318 - Aaron1011:fix/final-auto-trait-resolve, r=nikomatsakis

Ensure that Rustdoc discovers all necessary auto trait bounds

Fixes #50159

This commit makes several improvements to AutoTraitFinder:

* Call infcx.resolve_type_vars_if_possible before processing new
predicates. This ensures that we eliminate inference variables wherever
possible.
* Process all nested obligations we get from a vtable, not just ones
with depth=1.
  * The 'depth=1' check was a hack to work around issues processing
certain predicates. The other changes in this commit allow us to
properly process all predicates that we encounter, so the check is no
longer necessary,
* Ensure that we only display predicates *without* inference variables
to the user, and only attempt to unify predicates that *have* an
inference variable as their type.

Additionally, the internal helper method is_of_param now operates
directly on a type, rather than taking a Substs. This allows us to use
the 'self_ty' method, rather than directly dealing with Substs.

5 years agoFix printing of spans with no TyCtxt
John Kåre Alsaker [Mon, 3 Dec 2018 18:45:06 +0000 (19:45 +0100)]
Fix printing of spans with no TyCtxt

5 years agoFix
John Kåre Alsaker [Mon, 3 Dec 2018 18:07:16 +0000 (19:07 +0100)]
Fix

5 years agoFix a race condition
John Kåre Alsaker [Sun, 2 Dec 2018 20:57:47 +0000 (21:57 +0100)]
Fix a race condition

5 years agoShow usages of query cycles and correctly shift queries in a cycle
John Kåre Alsaker [Sun, 2 Dec 2018 02:01:12 +0000 (03:01 +0100)]
Show usages of query cycles and correctly shift queries in a cycle

5 years agoFix a stutter in the docs for slice::exact_chunks
Chris Barrick [Thu, 6 Dec 2018 21:53:24 +0000 (16:53 -0500)]
Fix a stutter in the docs for slice::exact_chunks

5 years agocodegen_utils, driver: fix clippy errors
ljedrz [Thu, 6 Dec 2018 15:39:19 +0000 (16:39 +0100)]
codegen_utils, driver: fix clippy errors

5 years agoAuto merge of #56565 - matthiaskrgr:clippy, r=oli-obk
bors [Thu, 6 Dec 2018 19:51:38 +0000 (19:51 +0000)]
Auto merge of #56565 - matthiaskrgr:clippy, r=oli-obk

submodules: update clippy from 29bf75cd to 1df5766c

Fixes clippy toolstate.

Changes:
````
Remove -preview suffix from README
rustup clippy build with latest rustc (breakage due to https://github.com/rust-lang/rust/commit/08f8faedd0e30f45762afbb8d4873f7041e7462c )
Forgot to remove some debugging code ...
Improved code noted by clippy.
Fix bug in `implicit_return`. Bug was already covered by test, but test was not checked for.
fix #3482 and add ui test for it
Don't change current working directory of cargo tests
Use cargo's "PROFILE" envvar and set CLIPPY_DOGFOOD
Use dogfood_runner for deterministic test ordering
Remove unnecessary documentation
Fix dogfood tests.
Added additional reasoning to `Why is this bad?`. Added comment to explain usage of MIR.
Renamed to `implicit_return`. Covered all other kinds besides `ExprKind::Lit`. Added check for replacing `break` with `return`.
Appeasing the Test Gods. Seems I'm not smart enough to run the tests locally before committing.
Renamed `forced_return` to `missing_returns`. Better clarification in the docs. Ran `update_lints`.
Added `FORCED_RETURN` lint.
````
r? @oli-obk

5 years agoAuto merge of #56282 - qnighy:additional-sizedness-fix, r=nikomatsakis
bors [Thu, 6 Dec 2018 17:31:15 +0000 (17:31 +0000)]
Auto merge of #56282 - qnighy:additional-sizedness-fix, r=nikomatsakis

Fix #56237: normalize type before deferred sizedness checking.

This seems to fix #56237, which was introduced by #56045. I don't thoroughly understand how this works, but the problem seemed to be a lack of normalization.

r? @cramertj

5 years agosubmodules: update clippy from 29bf75cd to 1df5766c
Matthias Krüger [Thu, 6 Dec 2018 16:38:01 +0000 (17:38 +0100)]
submodules: update clippy from 29bf75cd to 1df5766c

Fixes clippy toolstate.

Changes:
````
Remove -preview suffix from README
rustup clippy build with latest rustc (breakage due to https://github.com/rust-lang/rust/commit/08f8faedd0e30f45762afbb8d4873f7041e7462c )
Forgot to remove some debugging code ...
Improved code noted by clippy.
Fix bug in `implicit_return`. Bug was already covered by test, but test was not checked for.
fix #3482 and add ui test for it
Don't change current working directory of cargo tests
Use cargo's "PROFILE" envvar and set CLIPPY_DOGFOOD
Use dogfood_runner for deterministic test ordering
Remove unnecessary documentation
Fix dogfood tests.
Added additional reasoning to `Why is this bad?`. Added comment to explain usage of MIR.
Renamed to `implicit_return`. Covered all other kinds besides `ExprKind::Lit`. Added check for replacing `break` with `return`.
Appeasing the Test Gods. Seems I'm not smart enough to run the tests locally before committing.
Renamed `forced_return` to `missing_returns`. Better clarification in the docs. Ran `update_lints`.
Added `FORCED_RETURN` lint.
````

5 years agoUse a function to access the Hir map to be able to turn it into a query later
John Kåre Alsaker [Tue, 4 Dec 2018 12:45:36 +0000 (13:45 +0100)]
Use a function to access the Hir map to be able to turn it into a query later

5 years agoAuto merge of #56392 - petrochenkov:regensym, r=oli-obk
bors [Thu, 6 Dec 2018 15:08:11 +0000 (15:08 +0000)]
Auto merge of #56392 - petrochenkov:regensym, r=oli-obk

Delay gensym creation for "underscore items" (`use foo as _`/`const _`) until name resolution

So they cannot be cloned by macros. See https://github.com/rust-lang/rust/pull/56303 for the discussion.

Mostly fix cross-crate use of underscore items by inverting the "gensyms are lost in metadata" bug as described in https://github.com/rust-lang/rust/pull/56303#issuecomment-442464695.
Fix unused import warnings for single-segment imports (first commit) and `use crate_name as _` imports (as specified in https://github.com/rust-lang/rust/pull/56303#issuecomment-442274118).
Prohibit accidentally implemented `static _: TYPE = EXPR;` (cc https://github.com/rust-lang/rust/pull/55983).
Add more tests for `use foo as _` imports.

5 years agoChange sys::Thread::new to take the thread entry as Box<dyn FnBox() + 'static>̣
Jethro Beekman [Fri, 30 Nov 2018 05:09:12 +0000 (10:39 +0530)]
Change sys::Thread::new to take the thread entry as Box<dyn FnBox() + 'static>̣

5 years agoUpdate compiler_builtins and remove wasm f32<->f64 math conversions
Jethro Beekman [Wed, 21 Nov 2018 08:46:00 +0000 (14:16 +0530)]
Update compiler_builtins and remove wasm f32<->f64 math conversions

5 years agoRefactor net::each_addr/lookup_host to forward error from resolve
Jethro Beekman [Tue, 18 Sep 2018 22:25:08 +0000 (15:25 -0700)]
Refactor net::each_addr/lookup_host to forward error from resolve

5 years agoRefactor stderr_prints_nothing into a more modular function
Jethro Beekman [Mon, 27 Aug 2018 16:57:51 +0000 (09:57 -0700)]
Refactor stderr_prints_nothing into a more modular function

5 years agoFix bug in from_key_hashed_nocheck
John Kåre Alsaker [Thu, 6 Dec 2018 13:23:29 +0000 (14:23 +0100)]
Fix bug in from_key_hashed_nocheck

5 years agoAuto merge of #56557 - pietroalbini:rollup, r=pietroalbini
bors [Thu, 6 Dec 2018 12:41:30 +0000 (12:41 +0000)]
Auto merge of #56557 - pietroalbini:rollup, r=pietroalbini

Rollup of 11 pull requests

Successful merges:

 - #56315 (Rustdoc inline macro reexport)
 - #56332 ([rustdoc] Specific crate search)
 - #56362 (Stabilise exhaustive integer patterns)
 - #56426 (libsyntax_pos: A few tweaks)
 - #56441 (rustbuild: Fix issues with compiler docs)
 - #56446 (pass the parameter environment to `traits::find_associated_item`)
 - #56500 (cleanup: remove static lifetimes from consts)
 - #56525 (Avoid extra copy and syscall in std::env::current_exe)
 - #56528 (Remove unused dependency (rustc_lint -> rustc_mir))
 - #56548 (Optimized string FromIterator + Extend impls)
 - #56553 (Don't print the profiling summary to stdout when -Zprofile-json is set)

Failed merges:

r? @ghost

5 years agoAuto merge of #55635 - oli-obk:min_const_unsafe_fn, r=nikomatsakis
bors [Thu, 6 Dec 2018 10:18:17 +0000 (10:18 +0000)]
Auto merge of #55635 - oli-obk:min_const_unsafe_fn, r=nikomatsakis

Allow calling `const unsafe fn` in `const fn` behind a feature gate

cc #55607

r? @Centril

5 years agoRollup merge of #56553 - wesleywiser:silence_profiler_output, r=Mark-Simulacrum
Pietro Albini [Thu, 6 Dec 2018 06:49:02 +0000 (07:49 +0100)]
Rollup merge of #56553 - wesleywiser:silence_profiler_output, r=Mark-Simulacrum

Don't print the profiling summary to stdout when -Zprofile-json is set

cc rust-lang-nursery/rustc-perf#299

5 years agoRollup merge of #56548 - Lucretiel:string-extend-optimize, r=sfackler
Pietro Albini [Thu, 6 Dec 2018 06:49:01 +0000 (07:49 +0100)]
Rollup merge of #56548 - Lucretiel:string-extend-optimize, r=sfackler

Optimized string FromIterator + Extend impls

I noticed that there was a lost opportunity to reuse string buffers in `FromIterator<String>` and `FromIterator<Cow<str>>`; updated the implementations to use these. In practice this translates to at least one fewer allocation when using these APIs.

Additionally, rewrote `Extend` implementations to use `iter.for_each`, which (supposedly) helps the compiler optimize those loops (because iterator adapters are encouraged to provide optimized implementations of `fold` and `try_fold`.

5 years agoRollup merge of #56528 - sinkuu:unused_dep, r=Mark-Simulacrum
Pietro Albini [Thu, 6 Dec 2018 06:49:00 +0000 (07:49 +0100)]
Rollup merge of #56528 - sinkuu:unused_dep, r=Mark-Simulacrum

Remove unused dependency (rustc_lint -> rustc_mir)