]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agorustc_llvm: use cc::Build::define
Tamir Duberstein [Sun, 26 Nov 2017 21:25:49 +0000 (16:25 -0500)]
rustc_llvm: use cc::Build::define

6 years agorustc_llvm: remove stale references
Tamir Duberstein [Sun, 26 Nov 2017 17:09:35 +0000 (12:09 -0500)]
rustc_llvm: remove stale references

...that were removed in 77c3bfa7429abf87b76ba84108df018d9e9d90e2.

6 years agoAuto merge of #46291 - alexcrichton:wasm-tests, r=kennytm
bors [Tue, 28 Nov 2017 17:58:58 +0000 (17:58 +0000)]
Auto merge of #46291 - alexcrichton:wasm-tests, r=kennytm

ci: Start running wasm32 tests on Travis

This commit allocates a builder to running wasm32 tests on Travis. Not all test
suites pass right now so this is starting out with just the run-pass and the
libcore test suites. This'll hopefully give us a pretty broad set of coverage
for integration in rustc itself as well as a somewhat broad coverage of the llvm
backend itself through integration/unit tests.

6 years agoci: Start running wasm32 tests on Travis
Alex Crichton [Sun, 26 Nov 2017 18:39:16 +0000 (10:39 -0800)]
ci: Start running wasm32 tests on Travis

This commit allocates a builder to running wasm32 tests on Travis. Not all test
suites pass right now so this is starting out with just the run-pass and the
libcore test suites. This'll hopefully give us a pretty broad set of coverage
for integration in rustc itself as well as a somewhat broad coverage of the llvm
backend itself through integration/unit tests.

6 years agoAuto merge of #46329 - arielb1:incoherent, r=eddyb
bors [Tue, 28 Nov 2017 15:12:58 +0000 (15:12 +0000)]
Auto merge of #46329 - arielb1:incoherent, r=eddyb

Revert "fix treatment of local types in "remote coherence" mode"

That commit had accidentally snuck in into #44884 and it causes regressions. Revert it.

This reverts commit c48650ec25d2e7e872912137e68496248743f1fe.

@bors p=10 - fixes breakage in nightly
r? @eddyb

6 years agoRevert "fix treatment of local types in "remote coherence" mode"
Ariel Ben-Yehuda [Tue, 28 Nov 2017 12:52:34 +0000 (14:52 +0200)]
Revert "fix treatment of local types in "remote coherence" mode"

That commit had accidentally snuck in into #44884. Revert it.

This reverts commit c48650ec25d2e7e872912137e68496248743f1fe.

6 years agoAuto merge of #46175 - GuillaumeGomez:fix-global-search, r=QuietMisdreavus
bors [Tue, 28 Nov 2017 10:41:47 +0000 (10:41 +0000)]
Auto merge of #46175 - GuillaumeGomez:fix-global-search, r=QuietMisdreavus

Fix global search

Fixes #46021.

r? @QuietMisdreavus

6 years agoAuto merge of #46123 - Gankro:c-repr, r=eddyb
bors [Tue, 28 Nov 2017 08:04:58 +0000 (08:04 +0000)]
Auto merge of #46123 - Gankro:c-repr, r=eddyb

Implement the special repr(C)-non-clike-enum layout

This is the second half of https://github.com/rust-lang/rfcs/pull/2195

which specifies that

```rust
#[repr(C, u8)]
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
enum MyEnum {
    A(u32),                 // Single primitive value
    B { x: u8, y: i16 },    // Composite, and the offset of `y` depends on tag being internal
    C,                      // Empty
    D(Option<u32>),         // Contains an enum
    E(Duration),            // Contains a struct
}
```

Has the same layout as

```rust
#[repr(C)]
struct MyEnumRepr {
    tag: MyEnumTag,
    payload: MyEnumPayload,
}

#[repr(C)]
#[allow(non_snake_case)]
union MyEnumPayload {
    A: MyEnumVariantA,
    B: MyEnumVariantB,
    D: MyEnumVariantD,
    E: MyEnumVariantE,
}

#[repr(u8)] #[derive(Copy, Clone)] enum MyEnumTag { A, B, C, D, E }
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantA(u32);
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantB {x: u8, y: i16 }
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantD(Option<u32>);
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantE(Duration);

```

6 years agoFix and improve test for enum repr sizes
Alexis Beingessner [Mon, 20 Nov 2017 19:22:33 +0000 (14:22 -0500)]
Fix and improve test for enum repr sizes

6 years agoAuto merge of #46142 - eddyb:even-mirer-2, r=nikomatsakis
bors [Tue, 28 Nov 2017 05:38:19 +0000 (05:38 +0000)]
Auto merge of #46142 - eddyb:even-mirer-2, r=nikomatsakis

MIR: split Operand::Consume into Copy and Move.

By encoding the choice of leaving the source untouched (`Copy`) and invalidating it (`Move`) in MIR, we can express moves of copyable values and have MIR borrow-checking enforce them, *including* ownership transfer of stack locals in calls  (when the ABI passes by indirection).

Optimizations could turn a "last-use" `Copy` into a `Move`, and the MIR borrow-checker, at least within the confines of safe code, could even do this when the underlying lvalue was borrowed.
(However, that last part would be the first time lifetime inference affects code generation, AFAIK).

Furthermore, as `Move`s invalidate borrows as well, for any local that is initialized only once, we can ignore borrows that happened before a `Move` and safely reuse/replace its memory storage.
This will allow us to perform NRVO in the presence of short-lived borrows, unlike LLVM (currently), and even compute optimal `StorageLive...StorageDead` ranges instead of discarding them.

6 years agotests: update to include move annotations in MIR.
Eduard-Mihai Burtescu [Fri, 17 Nov 2017 16:22:44 +0000 (18:22 +0200)]
tests: update to include move annotations in MIR.

6 years agorustc_mir: require that Copy(L) satisfies typeof L: Copy.
Eduard-Mihai Burtescu [Fri, 17 Nov 2017 16:07:18 +0000 (18:07 +0200)]
rustc_mir: require that Copy(L) satisfies typeof L: Copy.

6 years agoMIR: split Operand::Consume into Copy and Move.
Eduard-Mihai Burtescu [Fri, 17 Nov 2017 15:19:57 +0000 (17:19 +0200)]
MIR: split Operand::Consume into Copy and Move.

6 years agorustc_mir: enforce that arguments are replaced with Local's only.
Eduard-Mihai Burtescu [Mon, 27 Nov 2017 19:01:30 +0000 (21:01 +0200)]
rustc_mir: enforce that arguments are replaced with Local's only.

6 years agorustc_mir: move storage_dead_or_drop_error_reported logic to access_lvalue.
Eduard-Mihai Burtescu [Mon, 20 Nov 2017 23:50:04 +0000 (01:50 +0200)]
rustc_mir: move storage_dead_or_drop_error_reported logic to access_lvalue.

6 years agoAuto merge of #46102 - kennytm:45861-step-1, r=alexcrichton
bors [Tue, 28 Nov 2017 02:08:52 +0000 (02:08 +0000)]
Auto merge of #46102 - kennytm:45861-step-1, r=alexcrichton

[auto-toolstate][1/8] Always ignore build failure of failable tools (rls, rustfmt, clippy)

If build failed for these tools, they will be automatically skipped from distribution, and will not fail the whole build.

Test failures are *not* ignored, nor build failure of other tools (e.g. cargo). Therefore it should have no observable effect to the current CI system.

This is step 1/8 of automatic management of broken tools #45861. The purpose is concentrate all failure detection about tools into a single CI job for easy management, while keeping the ability to distribute these tools in the nightlies.

r? @Mark-Simulacrum

6 years agoAuto merge of #46312 - kennytm:rollup, r=kennytm
bors [Mon, 27 Nov 2017 23:40:16 +0000 (23:40 +0000)]
Auto merge of #46312 - kennytm:rollup, r=kennytm

Rollup of 10 pull requests

- Successful merges: #45506, #46174, #46231, #46240, #46249, #46258, #46262, #46275, #46282, #46285
- Failed merges:

6 years agoRollup merge of #46285 - SimonSapin:twos-complement, r=GuillaumeGomez
kennytm [Mon, 27 Nov 2017 19:16:50 +0000 (03:16 +0800)]
Rollup merge of #46285 - SimonSapin:twos-complement, r=GuillaumeGomez

Document non-obvious behavior of fmt::UpperHex & co for negative integers

Before stabilization I’d have suggested changing the behavior,  but that time is past.

6 years agoRollup merge of #46282 - estebank:impl-trait-cicle-span, r=arielb1
kennytm [Mon, 27 Nov 2017 19:16:49 +0000 (03:16 +0800)]
Rollup merge of #46282 - estebank:impl-trait-cicle-span, r=arielb1

Shorten output of E0391

Use the shorter `def_span` on the impl-Trait cyclic reference errors.

6 years agoRollup merge of #46275 - dtolnay:compiletest-libc, r=Mark-Simulacrum
kennytm [Mon, 27 Nov 2017 19:16:48 +0000 (03:16 +0800)]
Rollup merge of #46275 - dtolnay:compiletest-libc, r=Mark-Simulacrum

Compiletest libc dependency can be unix-only

In main.rs libc is imported as:

```rust
#[cfg(unix)]
extern crate libc;
```

This came up in https://github.com/laumann/compiletest-rs/pull/90.

6 years agoRollup merge of #46262 - udoprog:linked-list-remove-if, r=dtolnay
kennytm [Mon, 27 Nov 2017 19:16:47 +0000 (03:16 +0800)]
Rollup merge of #46262 - udoprog:linked-list-remove-if, r=dtolnay

Introduce LinkedList::drain_filter

This introduces `LinkedList::remove_if`.

This operation embodies one of the use-cases where `LinkedList` would typically be preferred over `Vec`: random removal and retrieval.

There are a number of considerations with this:

Should there be two `remove_if` methods? One where elements are only removed, one which returns a collection of removed elements.

Should this be implemented using a draining iterator pattern that covers both cases? I suspect that would incur a bit of overhead (moving the element into the iterator, then into a new collection). But I'm not sure. Maybe that's an acceptable compromise to maximize flexibility.

I don't feel I've had enough exposure to unsafe programming in rust to be certain the implementation is correct. This relies quite heavily on moving around copies of Shared pointers to make the code reasonable. Please help me out :).

6 years agoRollup merge of #46258 - colinmarsh19:master, r=estebank
kennytm [Mon, 27 Nov 2017 19:16:47 +0000 (03:16 +0800)]
Rollup merge of #46258 - colinmarsh19:master, r=estebank

Remove semicolon note

In reference to issue #46186
r? @estebank

First time doing a pull request, if there are any suggestions on how to improve this please let me know.
@jjolly

6 years agoRollup merge of #46249 - estebank:suggest-slice, r=arielb1
kennytm [Mon, 27 Nov 2017 19:16:46 +0000 (03:16 +0800)]
Rollup merge of #46249 - estebank:suggest-slice, r=arielb1

Suggest using slice when encountering `let x = ""[..];`

Fix #26319.

6 years agoRollup merge of #46240 - SimonSapin:from_str_radix-docs, r=estebank
kennytm [Mon, 27 Nov 2017 19:16:45 +0000 (03:16 +0800)]
Rollup merge of #46240 - SimonSapin:from_str_radix-docs, r=estebank

Expand docs of <$Int>::from_str_radix, based on that of char::to_digit

6 years agoRollup merge of #46231 - ritiek:verbs, r=arielb1
kennytm [Mon, 27 Nov 2017 19:16:44 +0000 (03:16 +0800)]
Rollup merge of #46231 - ritiek:verbs, r=arielb1

MIR: Fix value moved diagnose messages

#45960. I believe this will take a different approach. Simply replacing all nouns to verbs (`desired_action`) messes up the message `use of moved value` (although fixes the message in original issue). Here is what happens:

<pre>
$ rustc -Zborrowck-mir src/test/ui/borrowck/borrowck-reinit.rs

error[E0382]: <b>used</b> of moved value: `x` (Mir)
  --> src/test/ui/borrowck/borrowck-reinit.rs:18:16
   |
17 |     drop(x);
   |          - value moved here
18 |     let _ = (1,x);
   |                ^ value used here after move

error: aborting due to 2 previous errors
</pre>
(Notice: *"**used** of moved value: `x`"* instead of *"**use**"*)

Which does not seem to be okay.

After experimenting a bit, it looks like [`report_use_of_moved_value()`](https://github.com/rust-lang/rust/blob/1dc0b573e7ce4314eb196b21b7e0ea4a1bf1f673/src/librustc_mir/borrow_check.rs#L1319) tries to handle both these messages by taking in only one form of`desired_action`.

These messages rise from: *"[{noun} of moved value](https://github.com/rust-lang/rust/blob/1dc0b573e7ce4314eb196b21b7e0ea4a1bf1f673/src/librustc_mir/borrow_check.rs#L1338-L1342)"* and *"[value {verb} here after move](https://github.com/rust-lang/rust/blob/1dc0b573e7ce4314eb196b21b7e0ea4a1bf1f673/src/librustc_mir/borrow_check.rs#L1343)"*.

This PR fixes *"value {verb} here after move"* type messages by passing a corresponding verb (`desired_action`) instead of the original noun.

6 years agoRollup merge of #46174 - stjepang:stabilize-spinloophint, r=sfackler
kennytm [Mon, 27 Nov 2017 19:16:43 +0000 (03:16 +0800)]
Rollup merge of #46174 - stjepang:stabilize-spinloophint, r=sfackler

Stabilize spin_loop_hint

Stabilize `spin_loop_hint` in release `1.23.0`.
I've also renamed feature `hint_core_should_pause` to `spin_loop_hint`.

cc #41196

6 years agoRollup merge of #45506 - ia0:mpsc_recv_error_from, r=alexcrichton
kennytm [Mon, 27 Nov 2017 19:16:41 +0000 (03:16 +0800)]
Rollup merge of #45506 - ia0:mpsc_recv_error_from, r=alexcrichton

Implement From<RecvError> for TryRecvError and RecvTimeoutError

According to the documentation, it looks to me that `TryRecvError` and `RecvTimeoutError` are strict extensions of `RecvError`. As such, it makes sense to allow conversion from the latter type to the two former types without constraining future developments.

This permits to write `input.recv()?` and `input.recv_timeout(timeout)?` in the same function for example.

6 years agoChange the stabilization version to 1.24.0
Stjepan Glavina [Mon, 27 Nov 2017 18:24:13 +0000 (19:24 +0100)]
Change the stabilization version to 1.24.0

6 years agoAuto merge of #46022 - matthewjasper:cannot-assign-twice-error, r=arielb1
bors [Mon, 27 Nov 2017 17:13:20 +0000 (17:13 +0000)]
Auto merge of #46022 - matthewjasper:cannot-assign-twice-error, r=arielb1

Mir Borrowck: Parity with Ast for E0384 (Cannot assign twice to immutable)

- Closes #45199
- Don't allow assigning to dropped immutable variables
- Show the "first assignment" note on the first assignment that can actually come before the second assignment.
- Make "first assignment" notes point to function parameters if needed.
- Don't show a "first assignment" note if the first and second assignment have the same span (in a loop). This matches ast borrowck for now, but maybe this we should add "in previous loop iteration" as with some other borrowck errors. (Commit 2)
- Use revisions to check mir borrowck for the existing tests for this error. (Commit 3)

~~Still working on a less ad-hoc way to get 'first assignment' notes to show on the correct assignment. Also need to check mutating function arguments.~~ Now using a new dataflow pass.

6 years agoAuto merge of #44884 - arielb1:pack-safe, r=nikomatsakis,eddyb
bors [Mon, 27 Nov 2017 14:23:02 +0000 (14:23 +0000)]
Auto merge of #44884 - arielb1:pack-safe, r=nikomatsakis,eddyb

Make accesses to fields of packed structs unsafe

To handle packed structs with destructors (which you'll think are a rare
case, but the `#[repr(packed)] struct Packed<T>(T);` pattern is
ever-popular, which requires handling packed structs with destructors to
avoid monomorphization-time errors), drops of subfields of packed
structs should drop a local move of the field instead of the original
one.

That's it, I think I'll use a strategy suggested by @Zoxc, where this mir
```
drop(packed_struct.field)
```

is replaced by
```
tmp0 = packed_struct.field;
drop tmp0
```

cc #27060 - this should deal with that issue after codegen of drop glue
is updated.

The new errors need to be changed to future-compatibility warnings, but
I'll rather do a crater run first with them as errors to assess the
impact.

cc @eddyb

Things which still need to be done for this:
 - [ ] - handle `repr(packed)` structs in `derive` the same way I did in `Span`, and use derive there again
 - [ ] - implement the "fix packed drops" pass and call it in both the MIR shim and validated MIR pipelines
 - [ ] - do a crater run
 - [ ] - convert the errors to compatibility warnings

6 years agoreword to "consider borrowing here: `{suggestion}`"
Esteban Küber [Sun, 26 Nov 2017 20:52:00 +0000 (12:52 -0800)]
reword to "consider borrowing here: `{suggestion}`"

6 years agoFix test
Esteban Küber [Mon, 27 Nov 2017 14:01:16 +0000 (06:01 -0800)]
Fix test

6 years agoMake main span in impl-trait ciclic reference point to def_span
Esteban Küber [Sun, 26 Nov 2017 20:37:13 +0000 (12:37 -0800)]
Make main span in impl-trait ciclic reference point to def_span

6 years agoAuto merge of #46292 - cramertj:update-libc, r=alexcrichton
bors [Mon, 27 Nov 2017 11:44:17 +0000 (11:44 +0000)]
Auto merge of #46292 - cramertj:update-libc, r=alexcrichton

Update libc to include latest Fuchsia fix

r? @alexcrichton

cc @smklein

6 years agoUpdate tests involving E0384 for mir-borrowck
Matthew Jasper [Mon, 27 Nov 2017 08:07:58 +0000 (08:07 +0000)]
Update tests involving E0384 for mir-borrowck

6 years agoDon't show first assignment in loops
Matthew Jasper [Mon, 27 Nov 2017 08:07:49 +0000 (08:07 +0000)]
Don't show first assignment in loops

Matches current ast-borrowck behavior.

6 years agoAdd initialization info to `MoveData`
Matthew Jasper [Mon, 27 Nov 2017 08:06:36 +0000 (08:06 +0000)]
Add initialization info to `MoveData`

* Used for new dataflow to track if a variable has every been initialized
* Used for other dataflows that need to be updated for initializations

6 years agoAuto merge of #46286 - SimonSapin:patch-6, r=alexcrichton
bors [Mon, 27 Nov 2017 07:54:39 +0000 (07:54 +0000)]
Auto merge of #46286 - SimonSapin:patch-6, r=alexcrichton

Increment Nightly version to 1.24.0

The beta channel is now at 1.23.0-beta.1.

6 years agoAuto merge of #46284 - SimonSapin:deprecate-formatter-flags, r=sfackler
bors [Mon, 27 Nov 2017 05:26:23 +0000 (05:26 +0000)]
Auto merge of #46284 - SimonSapin:deprecate-formatter-flags, r=sfackler

Deprecate the Formatter::flags method, fix #46237

This fixes #46237.

6 years agoAuto merge of #46273 - semarie:openbsd-libc++, r=alexcrichton
bors [Mon, 27 Nov 2017 01:43:41 +0000 (01:43 +0000)]
Auto merge of #46273 - semarie:openbsd-libc++, r=alexcrichton

make OpenBSD to use libc++ instead of (e)stdc++

6 years agoUpdate libc to include latest Fuchsia fix
Taylor Cramer [Mon, 27 Nov 2017 01:01:15 +0000 (17:01 -0800)]
Update libc to include latest Fuchsia fix

6 years agoIncrement Nightly version to 1.24.0
Simon Sapin [Sun, 26 Nov 2017 22:04:40 +0000 (23:04 +0100)]
Increment Nightly version to 1.24.0

The beta channel is now at 1.23.0-beta.1.

6 years agoDocument non-obvious behavior of fmt::UpperHex & co for negative integers
Simon Sapin [Sun, 26 Nov 2017 21:53:03 +0000 (22:53 +0100)]
Document non-obvious behavior of fmt::UpperHex & co for negative integers

Before stabilization I’d have suggested changing the behavior,
but that time is past.

6 years agoDeprecate the Formatter::flags method, fix #46237
Simon Sapin [Sun, 26 Nov 2017 21:43:56 +0000 (22:43 +0100)]
Deprecate the Formatter::flags method, fix #46237

6 years agoAuto merge of #46168 - durka:macro-backtrace, r=durka
bors [Sun, 26 Nov 2017 21:30:28 +0000 (21:30 +0000)]
Auto merge of #46168 - durka:macro-backtrace, r=durka

mention nightly in -Z external-macro-backtrace note

Fix #46167 by mentioning that you need nightly in the message that tells you to pass `-Z external-macro-backtrace`.

Rationale:

1. The reason for having this message is to increase discoverability of the functionality. If the message is only shown on nightly it's less disoverable.
2. The same approach is taken if you call a const fn in const context without its feature gate (previously, if you called it without `#![feature(const_fn)]`).

cc @kennytm

6 years agoMake impl-trait ciclical reference error point to def_span
Esteban Küber [Sun, 26 Nov 2017 20:35:19 +0000 (12:35 -0800)]
Make impl-trait ciclical reference error point to def_span

6 years agoMove "auto trait leak" impl-trait cycle dependency test to ui
Esteban Küber [Sun, 26 Nov 2017 20:32:30 +0000 (12:32 -0800)]
Move "auto trait leak" impl-trait cycle dependency test to ui

6 years agoAuto merge of #46106 - est31:master, r=nikomatsakis
bors [Sun, 26 Nov 2017 19:03:57 +0000 (19:03 +0000)]
Auto merge of #46106 - est31:master, r=nikomatsakis

Add a MIR-borrowck-only output mode

Removes the `-Z borrowck-mir` flag in favour of a `-Z borrowck=mode` flag where mode can be `mir`, `ast`, or `compare`.

* The `ast` mode represents the current default, passing `-Z borrowck=ast` is equivalent to not passing it at all.
* The `compare` mode outputs both the output of the MIR borrow checker and the AST borrow checker, each error with `(Ast)` and `(Mir)` appended. This mode has the same behaviour as `-Z borrowck-mir` had before this commit.
* The `mir` mode only outputs the results of the MIR borrow checker, while suppressing the errors of the ast borrow checker

The PR also updates the tests to use the new flags.

closes  #46097

6 years agomention nightly in -Z external-macro-backtrace note
Alex Burka [Tue, 21 Nov 2017 19:48:35 +0000 (19:48 +0000)]
mention nightly in -Z external-macro-backtrace note

6 years agoimprove error messages
Ariel Ben-Yehuda [Sun, 26 Nov 2017 17:01:19 +0000 (19:01 +0200)]
improve error messages

6 years agoAuto merge of #46253 - eddyb:return-aliasing, r=nagisa
bors [Sun, 26 Nov 2017 16:38:36 +0000 (16:38 +0000)]
Auto merge of #46253 - eddyb:return-aliasing, r=nagisa

rustc_trans: don't apply noalias on returned references.

In #45225 frozen returned `&T` were accidentally maked `noalias`, unlike `&mut T`.
Return value `noalias` is only sound for functions that return dynamic allocations, e.g. `Box`, and using it on anything else can lead to miscompilation, as LLVM assumes certain usage patterns.
Fixes #46239.

6 years agoUse the official abbrev.
est31 [Sun, 26 Nov 2017 15:59:47 +0000 (16:59 +0100)]
Use the official abbrev.

6 years agoUpdate tests for -Zborrowck-mir -> -Zborrowck=mode migration
est31 [Sun, 19 Nov 2017 22:37:59 +0000 (23:37 +0100)]
Update tests for -Zborrowck-mir -> -Zborrowck=mode migration

6 years agoReplace -Zborrowck-mir with -Zborrowck=mode
est31 [Sun, 19 Nov 2017 22:35:53 +0000 (23:35 +0100)]
Replace -Zborrowck-mir with -Zborrowck=mode

where mode is one of {ast,mir,compare}.

This commit only implements the functionality.
The tests will be updated in a follow up commit.

6 years agoChanged to correct quotes ` `
colinmarsh19 [Sun, 26 Nov 2017 14:40:29 +0000 (07:40 -0700)]
Changed to correct quotes ` `

6 years agoAdded .rs extension
colinmarsh19 [Sun, 26 Nov 2017 14:36:56 +0000 (07:36 -0700)]
Added .rs extension

6 years agomark rustfmt as broken
Ariel Ben-Yehuda [Thu, 23 Nov 2017 20:18:48 +0000 (22:18 +0200)]
mark rustfmt as broken

There's a trailing whitespace problem in one of the tests. @nrc said
he'll go fix it quickly, but until then I'll like to land this PR.

I suspect this happened because one of the dependencies in the
Cargo.lock I updated had changed the format of the XML they emit, but
that has to be investigated.

6 years agofix NetBSD
Ariel Ben-Yehuda [Thu, 23 Nov 2017 12:17:56 +0000 (14:17 +0200)]
fix NetBSD

6 years agolimit packed copy-out to non-generic Copy structs
Ariel Ben-Yehuda [Sun, 19 Nov 2017 15:04:24 +0000 (17:04 +0200)]
limit packed copy-out to non-generic Copy structs

6 years agofix #[derive] implementation for repr(packed) structs
Ariel Ben-Yehuda [Mon, 2 Oct 2017 13:15:23 +0000 (15:15 +0200)]
fix #[derive] implementation for repr(packed) structs

Fix the derive implementation for repr(packed) structs to move the
fields out instead of calling functions on references to each subfield.

That's it, `#[derive(PartialEq)]` on a packed struct now does:
```Rust
fn eq(&self, other: &Self) {
    let field_0 = self.0;
    let other_field_0 = other.0;
    &field_0 == &other_field_0
}
```

Instead of
```Rust
fn eq(&self, other: &Self) {
    let ref field_0 = self.0;
    let ref other_field_0 = other.0;
    &*field_0 == &*other_field_0
}
```

Taking (unaligned) references to each subfield is undefined, unsound and
is an error with MIR effectck, so it had to be prevented. This causes
a borrowck error when a `repr(packed)` struct has a non-Copy field (and
therefore is a [breaking-change]), but I don't see a sound way to avoid
that error.

6 years agomake accessing packed fields a future-compat warning
Ariel Ben-Yehuda [Thu, 16 Nov 2017 18:12:23 +0000 (20:12 +0200)]
make accessing packed fields a future-compat warning

6 years agofix codegen of drops of fields of packed structs
Ariel Ben-Yehuda [Tue, 3 Oct 2017 14:01:01 +0000 (16:01 +0200)]
fix codegen of drops of fields of packed structs

6 years agoupdate Cargo.lock & rustdoc
Ariel Ben-Yehuda [Mon, 2 Oct 2017 13:40:19 +0000 (15:40 +0200)]
update Cargo.lock & rustdoc

This is required because the old version depended on tendril 0.3.1,
which used `repr(packed)` incorrectly - see
https://github.com/kuchiki-rs/kuchiki/pull/38

6 years agomake accesses to fields of packed structs unsafe
Ariel Ben-Yehuda [Wed, 27 Sep 2017 11:23:45 +0000 (14:23 +0300)]
make accesses to fields of packed structs unsafe

To handle packed structs with destructors (which you'll think are a rare
case, but the `#[repr(packed)] struct Packed<T>(T);` pattern is
ever-popular, which requires handling packed structs with destructors to
avoid monomorphization-time errors), drops of subfields of packed
structs should drop a local move of the field instead of the original
one.

cc #27060 - this should deal with that issue after codegen of drop glue
is updated.

The new errors need to be changed to future-compatibility warnings, but
I'll rather do a crater run first with them as errors to assess the
impact.

6 years agofix treatment of local types in "remote coherence" mode
Ariel Ben-Yehuda [Wed, 22 Nov 2017 20:39:40 +0000 (22:39 +0200)]
fix treatment of local types in "remote coherence" mode

6 years agoMIR: Fix value moved diagnose messages
Ritiek Malhotra [Thu, 23 Nov 2017 11:36:48 +0000 (17:06 +0530)]
MIR: Fix value moved diagnose messages

MIR: adopt borrowck test

Fix trailing whitespace

span_bug! on unexpected action

Make RegionVid use newtype_index!

Closes #45843

Check rvalue aggregates during check_stmt in tycheck, add initial, (not passing) test

Fix failing test

Remove attributes and test comments accidentally left behind, add in span_mirbugs

Normalize LvalueTy for ops and format code to satisfy tidy check

only normalize operand types when in an ADT constructor

avoid early return

handle the active field index in unions

normalize types in ADT constructor

Fixes #45940

Fix borrowck compiler errors for upvars contain "spurious" dereferences

Fixes #46003

added associated function Box::leak

Box::leak - improve documentation

Box::leak - fixed bug in documentation

Box::leak - relaxed constraints wrt. lifetimes

Box::leak - updated documentation

Box::leak - made an oops, fixed now =)

Box::leak: update unstable issue number (46179).

Add test for #44953

Add missing Debug impls to std_unicode

Also adds #![deny(missing_debug_implementations)] so they don't get
missed again.

Amend RELEASES for 1.22.1

and fix the date for 1.22.0

Rename param in `[T]::swap_with_slice` from `src` to `other`.

The idea of ‘source’ and ‘destination’ aren’t very applicable for this
operation since both slices can both be considered sources and
destinations.

Clarify stdin behavior of `Command::output`.

Fixes #44929.

Add hints for the case of confusing enum with its variants

Add failing testcases

Add module population and case of enum in place of expression

Use for_each_child_stable in find_module

Use multiline text for crate conflict diagnostics

Make float::from_bits transmute (and update the documentation to reflect this).

The current implementation/documentation was made to avoid sNaN because of
potential safety issues implied by old/bad LLVM documentation. These issues
aren't real, so we can just make the implementation transmute (as permitted
by the existing documentation of this method).

Also the documentation didn't actually match the behaviour: it said we may
change sNaNs, but in fact we canonicalized *all* NaNs.

Also an example in the documentation was wrong: it said we *always* change
sNaNs, when the documentation was explicitly written to indicate it was
implementation-defined.

This makes to_bits and from_bits perfectly roundtrip cross-platform, except
for one caveat: although the 2008 edition of IEEE-754 specifies how to
interpet the signaling bit, earlier editions didn't. This lead to some platforms
picking the opposite interpretation, so all signaling NaNs on x86/ARM are quiet
on MIPS, and vice-versa.

NaN-boxing is a fairly important optimization, while we don't even guarantee
that float operations properly preserve signalingness. As such, this seems like
the more natural strategy to take (as opposed to trying to mangle the signaling
bit on a per-platform basis).

This implementation is also, of course, faster.

Simplify an Iterator::fold to Iterator::any

This method of once-diagnostics doesn't allow nesting

UI tests extract the regular output from the 'rendered' field in json

Merge cfail and ui tests into ui tests

Add a MIR pass to lower 128-bit operators to lang item calls

Runs only with `-Z lower_128bit_ops` since it's not hooked into targets yet.

Include tuple projections in MIR tests

Add type checking for the lang item

As part of doing so, add more lang items instead of passing u128 to the i128 ones where it doesn't matter in twos-complement.

Handle shifts properly

* The overflow-checking shift items need to take a full 128-bit type, since they need to be able to detect idiocy like `1i128 << (1u128 << 127)`
* The unchecked ones just take u32, like the `*_sh?` methods in core
* Because shift-by-anything is allowed, cast into a new local for every shift

incr.comp.: Make sure we don't lose unused green results from the query cache.

rustbuild: Update LLVM and enable ThinLTO

This commit updates LLVM to fix #45511 (https://reviews.llvm.org/D39981) and
also reenables ThinLTO for libtest now that we shouldn't hit #45768. This also
opportunistically enables ThinLTO for libstd which was previously blocked
(#45661) on test failures related to debuginfo with a presumed cause of #45511.

Closes #45511

std: Flag Windows TLS dtor symbol as #[used]

Turns out ThinLTO was internalizing this symbol and eliminating it. Worse yet if
you compiled with LTO turns out no TLS destructors would run on Windows! The
`#[used]` annotation should be a more bulletproof implementation (in the face of
LTO) of preserving this symbol all the way through in LLVM and ensuring it makes
it all the way to the linker which will take care of it.

Add enum InitializationRequiringAction

Fix tidy tests

6 years agoAuto merge of #46203 - nikomatsakis:type-foldable-macro, r=eddyb
bors [Sun, 26 Nov 2017 14:10:38 +0000 (14:10 +0000)]
Auto merge of #46203 - nikomatsakis:type-foldable-macro, r=eddyb

introduce macros for type-foldable and lift, convert stuff to use them

A random commit from a branch I've shelved for the time being that made `TypeFoldable` stuff a bit less annoying to write.

r? @eddyb

6 years agoCompiletest libc dependency can be unix-only
David Tolnay [Sun, 26 Nov 2017 13:08:23 +0000 (05:08 -0800)]
Compiletest libc dependency can be unix-only

In main.rs libc is imported as:

    #[cfg(unix)]
    extern crate libc;

6 years agoFix global search
Guillaume Gomez [Tue, 21 Nov 2017 23:17:30 +0000 (00:17 +0100)]
Fix global search

6 years agoAuto merge of #46100 - KiChjang:mass-dead-check, r=nikomatsakis
bors [Sun, 26 Nov 2017 11:43:19 +0000 (11:43 +0000)]
Auto merge of #46100 - KiChjang:mass-dead-check, r=nikomatsakis

Kill the storage for all locals on returning terminators

Fixes #45704.

6 years agoAuto merge of #46272 - kennytm:rollup, r=kennytm
bors [Sun, 26 Nov 2017 09:15:06 +0000 (09:15 +0000)]
Auto merge of #46272 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

- Successful merges: #46201, #46224, #46234, #46252, #46259, #46264, #46269
- Failed merges:

6 years agomake OpenBSD to use libc++ instead of (e)stdc++
Sébastien Marie [Sun, 26 Nov 2017 09:08:25 +0000 (10:08 +0100)]
make OpenBSD to use libc++ instead of (e)stdc++

6 years agoRollup merge of #46269 - udoprog:check-links, r=KodrAus
kennytm [Sun, 26 Nov 2017 07:01:40 +0000 (15:01 +0800)]
Rollup merge of #46269 - udoprog:check-links, r=KodrAus

Check tail node in check_links

6 years agoRollup merge of #46264 - scottmcm:mir-array-len, r=arielb1
kennytm [Sun, 26 Nov 2017 07:01:39 +0000 (15:01 +0800)]
Rollup merge of #46264 - scottmcm:mir-array-len, r=arielb1

InstCombine Len([_; N]) => const N in MIR

A small opportunity I noticed in passing.

Not super exciting on its own, but opens the door for a const propagation pass that could completely remove const bounds checks from arrays at MIR time, for example.

6 years agoRollup merge of #46259 - bjorn3:display_lang_item, r=nagisa
kennytm [Sun, 26 Nov 2017 07:01:38 +0000 (15:01 +0800)]
Rollup merge of #46259 - bjorn3:display_lang_item, r=nagisa

Derive Debug for LangItem

6 years agoRollup merge of #46252 - zilbuz:msvc-doc, r=kennytm
kennytm [Sun, 26 Nov 2017 07:01:37 +0000 (15:01 +0800)]
Rollup merge of #46252 - zilbuz:msvc-doc, r=kennytm

Update MSVC compilation instructions regarding path length on Windows

Fix #46214

6 years agoRollup merge of #46234 - lucasem:core-marker-typo, r=frewsxcv
kennytm [Sun, 26 Nov 2017 07:01:36 +0000 (15:01 +0800)]
Rollup merge of #46234 - lucasem:core-marker-typo, r=frewsxcv

core::marker fix typo

6 years agoRollup merge of #46224 - GuillaumeGomez:io-missing-link, r=QuietMisdreavus
kennytm [Sun, 26 Nov 2017 07:01:35 +0000 (15:01 +0800)]
Rollup merge of #46224 - GuillaumeGomez:io-missing-link, r=QuietMisdreavus

Remove invalid doc link

r? @rust-lang/docs

6 years agoRollup merge of #46201 - davidalber:eprint-in-fmt-doc, r=frewsxcv
kennytm [Sun, 26 Nov 2017 07:01:34 +0000 (15:01 +0800)]
Rollup merge of #46201 - davidalber:eprint-in-fmt-doc, r=frewsxcv

Adding `eprint*!` to the list of macros in the `format!` family

The `eprint!` and `eprintln!` macros were added in 7612727. The `std::fmt` documentation does not mention these macros next to `print!` and `println!` in the [Related macros](https://doc.rust-lang.org/std/fmt/#related-macros) section, and I did not find evidence that this omission was deliberate. This PR adds such documentation.

The first modification is to add `eprint!` and `eprintln!` to the list of related macros in the `format!` family. This is how it appears with this change:

![image](https://user-images.githubusercontent.com/933552/33159527-67056caa-cfc8-11e7-8b7d-4224ef2fce4e.png)

The second modification adds a sub-section for `eprint!` and `eprintln!`. Here is how the new section appears:

![image](https://user-images.githubusercontent.com/933552/33159541-97d03bee-cfc8-11e7-8b95-4d3632b5ab7b.png)

6 years agoAuto merge of #45990 - murarth:rc-from-strs, r=alexcrichton
bors [Sun, 26 Nov 2017 06:49:43 +0000 (06:49 +0000)]
Auto merge of #45990 - murarth:rc-from-strs, r=alexcrichton

Implement `Rc`/`Arc` conversions for string-like types

Provides the following conversion implementations:

* `From<`{`CString`,`&CStr`}`>` for {`Arc`,`Rc`}`<CStr>`
* `From<`{`OsString`,`&OsStr`}`>` for {`Arc`,`Rc`}`<OsStr>`
* `From<`{`PathBuf`,`&Path`}`>` for {`Arc`,`Rc`}`<Path>`

Closes #45008

6 years agoImplement `Rc`/`Arc` conversions for string-like types
Murarth [Tue, 14 Nov 2017 19:31:07 +0000 (12:31 -0700)]
Implement `Rc`/`Arc` conversions for string-like types

Provides the following conversion implementations:

* `From<`{`CString`,`&CStr`}`>` for {`Arc`,`Rc`}`<CStr>`
* `From<`{`OsString`,`&OsStr`}`>` for {`Arc`,`Rc`}`<OsStr>`
* `From<`{`PathBuf`,`&Path`}`>` for {`Arc`,`Rc`}`<Path>`

6 years agoAuto merge of #46033 - sinkuu:const-enum-match-check, r=arielb1
bors [Sun, 26 Nov 2017 04:26:19 +0000 (04:26 +0000)]
Auto merge of #46033 - sinkuu:const-enum-match-check, r=arielb1

Do match-check for consts

Fixes #43195 (ICE caused by building MIR that contains non-exausitive match)

6 years agoDelete bad test file
colinmarsh19 [Sun, 26 Nov 2017 04:14:15 +0000 (21:14 -0700)]
Delete bad test file

6 years agoAdded 46186 stderr
colinmarsh19 [Sun, 26 Nov 2017 02:30:15 +0000 (19:30 -0700)]
Added 46186 stderr

6 years agoUI test 46186
colinmarsh19 [Sun, 26 Nov 2017 02:26:47 +0000 (19:26 -0700)]
UI test 46186

6 years agoChanged from note to span_suggestion_short
colinmarsh19 [Sun, 26 Nov 2017 01:34:20 +0000 (18:34 -0700)]
Changed from note to span_suggestion_short

6 years agoAuto merge of #45947 - estebank:match_default_bindings-arg-hint, r=arielb1
bors [Sun, 26 Nov 2017 01:05:56 +0000 (01:05 +0000)]
Auto merge of #45947 - estebank:match_default_bindings-arg-hint, r=arielb1

Be more obvious when suggesting dereference

Include `&` span when suggesting dereference on a span that is already a reference:

```
error: non-reference pattern used to match a reference (see issue #42640)
  --> dont-suggest-dereference-on-arg.rs:16:19
   |
16 |         .filter(|&(ref a, _)| foo(a))
   |                  ^^^^^^^^^^^ help: consider using: `&&(ref k, _)`
   |
   = help: add #![feature(match_default_bindings)] to the crate attributes to enable
```

Fix #45925.

6 years agoCheck tail node in check_links
John-John Tedro [Sat, 25 Nov 2017 23:30:33 +0000 (00:30 +0100)]
Check tail node in check_links

6 years agoAuto merge of #45367 - alexcrichton:simd-llvm-changes, r=eddyb
bors [Sat, 25 Nov 2017 22:38:47 +0000 (22:38 +0000)]
Auto merge of #45367 - alexcrichton:simd-llvm-changes, r=eddyb

rustc: Add support for some more x86 SIMD ops

This commit adds compiler support for two basic operations needed for binding
SIMD on x86 platforms:

* First, a `nontemporal_store` intrinsic was added for the `_mm_stream_ps`, seen
  in rust-lang-nursery/stdsimd#114. This was relatively straightforward and is
  quite similar to the volatile store intrinsic.

* Next, and much more intrusively, a new type to the backend was added. The
  `x86_mmx` type is used in LLVM for a 64-bit vector register and is used in
  various intrinsics like `_mm_abs_pi8` as seen in rust-lang-nursery/stdsimd#74.
  This new type was added as a new layout option as well as having support added
  to the trans backend. The type is enabled with the `#[repr(x86_mmx)]`
  attribute which is intended to just be an implementation detail of SIMD in
  Rust.

I'm not 100% certain about how the `x86_mmx` type was added, so any extra eyes
or thoughts on that would be greatly appreciated!

6 years agoDisable region-liveness-drop-no-may-dangle.rs
Keith Yeung [Sat, 25 Nov 2017 21:57:51 +0000 (13:57 -0800)]
Disable region-liveness-drop-no-may-dangle.rs

6 years agoImplement LinkedList::drain_filter
John-John Tedro [Sat, 25 Nov 2017 20:14:37 +0000 (21:14 +0100)]
Implement LinkedList::drain_filter

Relates to rust-lang/rfcs#2140 - drain_filter for all collections

`drain_filter` is implemented instead of `LinkedList::remove_if` based
on review feedback.

6 years agoIntroduce LinkedList::remove_if
John-John Tedro [Sat, 25 Nov 2017 17:35:30 +0000 (18:35 +0100)]
Introduce LinkedList::remove_if

6 years agoInstCombine Len([_; N]) => const N in MIR
Scott McMurray [Sat, 25 Nov 2017 19:59:16 +0000 (11:59 -0800)]
InstCombine Len([_; N]) => const N in MIR

6 years agorustc: Add support for some more x86 SIMD ops
Alex Crichton [Wed, 18 Oct 2017 17:30:29 +0000 (10:30 -0700)]
rustc: Add support for some more x86 SIMD ops

This commit adds compiler support for two basic operations needed for binding
SIMD on x86 platforms:

* First, a `nontemporal_store` intrinsic was added for the `_mm_stream_ps`, seen
  in rust-lang-nursery/stdsimd#114. This was relatively straightforward and is
  quite similar to the volatile store intrinsic.

* Next, and much more intrusively, a new type to the backend was added. The
  `x86_mmx` type is used in LLVM for a 64-bit vector register and is used in
  various intrinsics like `_mm_abs_pi8` as seen in rust-lang-nursery/stdsimd#74.
  This new type was added as a new layout option as well as having support added
  to the trans backend. The type is enabled with the `#[repr(x86_mmx)]`
  attribute which is intended to just be an implementation detail of SIMD in
  Rust.

I'm not 100% certain about how the `x86_mmx` type was added, so any extra eyes
or thoughts on that would be greatly appreciated!

6 years agoAuto merge of #46115 - alexcrichton:add-wasm-target, r=kennytm
bors [Sat, 25 Nov 2017 19:00:45 +0000 (19:00 +0000)]
Auto merge of #46115 - alexcrichton:add-wasm-target, r=kennytm

rustbuild: Enable WebAssembly backend by default

This commit alters how we compile LLVM by default enabling the WebAssembly
backend. This then also adds the wasm32-unknown-unknown target to get compiled
on the `cross` builder and distributed through rustup. Tests are not yet enabled
for this target but that should hopefully be coming soon!

6 years agoFix test
Esteban Küber [Fri, 24 Nov 2017 16:27:33 +0000 (08:27 -0800)]
Fix test

6 years agoDerive Debug for LangItem
bjorn3 [Sat, 25 Nov 2017 16:33:47 +0000 (17:33 +0100)]
Derive Debug for LangItem

6 years agoAdded ;
colinmarsh19 [Sat, 25 Nov 2017 16:06:06 +0000 (09:06 -0700)]
Added ;

6 years agoRemove index type check (review comment)
Esteban Küber [Sat, 25 Nov 2017 14:20:07 +0000 (06:20 -0800)]
Remove index type check (review comment)

6 years agoFixed Err by passing "err"
colinmarsh19 [Sat, 25 Nov 2017 15:47:05 +0000 (08:47 -0700)]
Fixed Err by passing "err"