86555 Commits

Author SHA1 Message Date
Mark Rousskov
8fd4e5a467
Rollup merge of #55719 - pnkfelix:issue-54388-sidestep-link-error-from-rustfixed-code, r=alexcrichton
Sidestep link error from rustfix'ed code by using a *defined* static.

As a drive-by, added `-g` to the compile-flags so that the test more
reliably fails to compile when the extern static in question is *not*
provided. (I.e. this is making the test more robust in the face of
potential future revisions.)

Fix #54388.
2018-11-08 18:14:56 -07:00
Mark Rousskov
602a8b400f
Rollup merge of #55659 - alexcrichton:musl-no-group, r=michaelwoerister
rustc: Delete grouping logic from the musl target

This commit deletes the injection of `-(` and `-)` options to the linker
for the musl targets. This actually causes problems today on nightly if
you execute:

    $ echo 'fn main() {}' >> foo.rs
    $ rustc --target x86_64-unknown-linux-musl -C panic=abort

you get a linker error about "cannot nest groups". This comes about
because rustc injects its own `--start-group` and `--end-group`
variables which clash with the outer `-(` and `-)` variables. It's not
entirely clear to me why this doesn't affect the musl target by default
(in `-C panic=unwind` mode).

The compiler's own injection of `--start-group` and `--end-group` should
solve the issues mentioned in the comment for injecting `-(` and `-)` as
well.
2018-11-08 18:14:53 -07:00
Mark Rousskov
4805a97274
Rollup merge of #55638 - pnkfelix:issue-55608-ice-reempty-msg_span_from_free_region, r=estebank
Fix ICE in msg_span_from_free_region on ReEmpty

On an example like this:

```rust
#![feature(conservative_impl_trait)]

fn server() -> impl FilterBase2 {
    segment2(|| { loop { } }).map2(|| "")
}

trait FilterBase2 {
    fn map2<F>(self, _fn: F) -> Map2<F> where Self: Sized { loop { } }
}

struct Map2<F> { _func: F }

impl<F> FilterBase2 for Map2<F> { }

fn segment2<F>(_fn: F) -> Map2<F> where F: Fn() -> Result<(), ()> {
    loop { }
}
```

we now, instead of ICE'ing, get a diagnostic like:

```
error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
 --> issue-55608.rs:3:16
  |
3 | fn server() -> impl FilterBase2 {
  |                ^^^^^^^^^^^^^^^^
  |
  = note: hidden type `Map2<[closure@issue-55608.rs:4:36: 4:41]>` captures an empty lifetime
```

Fix #55608
2018-11-08 18:14:51 -07:00
Mark Rousskov
78cab36139
Rollup merge of #55633 - nikic:memcpy-align, r=nagisa
Support memcpy/memmove with differing src/dst alignment

If LLVM 7 is used, generate memcpy/memmove with differing src/dst alignment. I've added new FFI functions to construct these through the builder API, which is more convenient than dealing with differing intrinsic signatures depending on the LLVM version.

Fixes #49740.
2018-11-08 18:14:49 -07:00
Mark Rousskov
6153ce127a
Rollup merge of #55576 - birkenfeld:opt-level-error-msg, r=cramertj
Clarify error message for -C opt-level

The new levels s and z are not mentioned as possible values.
2018-11-08 18:14:46 -07:00
Felix S. Klock II
9b6a568c6f Fix the expected error annotations.
(The commit prior to this actual passes our test suite, "thanks"
to #55695. But since I am aware of that bug, I took advantage of it
in choosing how to order my commit series...)
2018-11-09 00:26:28 +01:00
Felix S. Klock II
d0151cac17 Switch to using // revisions to explicit encode NLL's change to Box treatment. 2018-11-09 00:21:46 +01:00
Esteban Küber
24289a050a Sidestep ICE in type_of_def_id() when called from return_type_impl_trait 2018-11-08 15:18:55 -08:00
Felix S. Klock II
92ef0c4bff Make test robust to NLL, in sense of ensuring borrows extend to something approximating lexical scope. 2018-11-09 00:14:11 +01:00
Felix S. Klock II
918f70f628 Removed an unneeded instance of // revisions; the compare-mode NLL shows the output is identical now. 2018-11-09 00:03:17 +01:00
Stjepan Glavina
d75dae3069 Deprecate channel selection 2018-11-08 22:51:46 +01:00
Oliver Scherer
ffa7ce4290 Add more regression tests 2018-11-08 20:18:26 +01:00
Oliver Scherer
df10965dc0 Prevent ICE in const-prop array oob check 2018-11-08 20:15:13 +01:00
Murarth
317f494c72 Fix Rc/Arc allocation layout
* Rounds allocation layout up to a multiple of alignment
* Adds a convenience method `Layout::pad_to_align` to perform rounding
2018-11-08 11:50:02 -07:00
Nikita Popov
b1a33971ab Fix some tests for wasm32-unknown-emscripten 2018-11-08 18:17:57 +01:00
varkor
56acb2a001
Fix typo in comment
Co-Authored-By: Aaron1011 <aa1ronham@gmail.com>
2018-11-08 12:15:26 -05:00
Stjepan Glavina
f211581330 Use T: ?Sized in intrinsics::forget 2018-11-08 17:58:12 +01:00
Tim Neumann
50a2d47b4f Support for the program data address space option
of LLVM's Target Datalayout.

https://llvm.org/docs/LangRef.html#data-layout
2018-11-08 17:46:30 +01:00
Stjepan Glavina
06cf9ae7f9 Fix return type of forget intrinsic 2018-11-08 17:12:14 +01:00
Nikita Popov
6fb701e874 Fix compiletest support for wasm32-unknown-emscripten 2018-11-08 17:04:22 +01:00
Alex Crichton
255cc1aed3 rustc: Request ansi colors if stderr isn't a tty
Currently Cargo will always capture the output of rustc meaning that
rustc is never hooked up to a tty. To retain colors Cargo uses the
`fwdansi` crate to ensure that ansi color codes are translated to
windows terminal methods (and ansi codes otherwise just go their natural
route on Unix).

Cargo passes `--color always` to rustc to ensure that using a pipe
doesn't trick it into not emitting colors at all. It turns out, however,
that `--color always` ends up still accidentally using the native shell
api on native windows shells.

The fix here is to instead pass `AlwaysAnsi` to `termcolor` instead of
`Always`, ensuring that when `--color always` is passed to rustc and its
output isn't a terminal, we're always generating ansi colors regardless
of the platform.

Closes #55769
2018-11-08 07:53:03 -08:00
Nikita Popov
ffdb2bc1c5 Update the disabled wasm32 Dockerfile 2018-11-08 16:32:42 +01:00
Nikita Popov
8407612a8d Disable wasm32 features on emscripten
These are only supported by the native wasm32 backend.
2018-11-08 16:22:20 +01:00
Stjepan Glavina
39771339fd Allow unsized types in mem::drop and mem::forget 2018-11-08 16:09:20 +01:00
Meltinglava
b937be87cb Clarifying documentation for collections::hash_map::Entry::or_insert
Previous version does not show that or_insert does not insert the
passed value, as the passed value was the same value as what was
already in the map.
2018-11-08 15:43:18 +01:00
Oliver Scherer
428af73e7c Rebase fallout 2018-11-08 14:52:02 +01:00
Oliver Scherer
5d58a036de Give AllocationExtras access to their entire Allocation 2018-11-08 14:52:02 +01:00
Oliver Scherer
769ee79a69 Fallout 2018-11-08 14:52:02 +01:00
Oliver Scherer
00e524ce34 Move Pointer to its own module 2018-11-08 14:52:02 +01:00
Oliver Scherer
99ed98b1ff Move ScalarMaybeUndef into value.rs 2018-11-08 14:52:02 +01:00
Oliver Scherer
2108b6bc95 Move UndefMask and Relocations into allocation.rs 2018-11-08 14:52:02 +01:00
Oliver Scherer
6def30ba6a Move the memory_accessed hook onto the Extra value 2018-11-08 14:52:02 +01:00
Oliver Scherer
48f6941acf Move ScalarMaybeUndef back to rustc 2018-11-08 14:52:02 +01:00
Oliver Scherer
7db04835f9 Move Allocation into its own module 2018-11-08 14:52:02 +01:00
Oliver Scherer
c6404f56e7 Duplicate mod.rs for better diff tracking 2018-11-08 14:52:02 +01:00
Felix S. Klock II
dd6398256e Revise the temp creation for blocks in stmt_expr to setup BlockTailInfo. 2018-11-08 14:32:17 +01:00
Felix S. Klock II
e7e1a52f63 Refactor code so that block_context observations has nicely named (and documented) methods. 2018-11-08 14:31:12 +01:00
Felix S. Klock II
556f583587 Regression test for issue #54382
(I opted to rely on compare-mode=nll rather than opt into
`#![feature(nll)]`, mostly to make it easy to observe the interesting
differences between the AST-borrwock diagnostic and the NLL one.)
2018-11-08 12:54:20 +01:00
Felix S. Klock II
3011ecdeac Narrow span of temp holding the value of a Block expression to the block's tail (if present). 2018-11-08 12:54:20 +01:00
Felix S. Klock II
ece4f472c9 For diagnostics, set spans of drops of temps to be that of the statement's terminating semicolon. 2018-11-08 12:54:20 +01:00
ljedrz
e3390d89ea Improve creation of 3 IndexVecs 2018-11-08 11:55:10 +01:00
bors
653da4fd00 Auto merge of #55532 - pnkfelix:rustc_error-survey, r=nikomatsakis
#[rustc_error] survey

Fix #55505
2018-11-08 09:38:49 +00:00
Nicholas Nethercote
5b2314b3ca Use SmallVec outparams in several functions.
This avoids some allocations, reducing instruction counts by 1% on a
couple of benchmarks.
2018-11-08 19:10:53 +11:00
Nicholas Nethercote
706c2ad651 Use Lit rather than P<Lit> in ast::ExprKind.
Because it results in fewer allocations and small speedups on some
benchmarks.
2018-11-08 19:00:55 +11:00
bors
1d834550d5 Auto merge of #55366 - Amanieu:stable_layout, r=Amanieu
Add tracking issue for Layout methods (and some API changes)

These methods are already useful when used with the stable global allocator API (stabilized in #51241).

```rust
pub fn align_to(&self, align: usize) -> Result<Layout, LayoutErr>;
pub fn padding_needed_for(&self, align: usize) -> usize;
pub fn repeat(&self, n: usize) -> Result<(Layout, usize), LayoutErr>;
pub fn extend(&self, next: Layout) -> Result<(Layout, usize), LayoutErr>;
pub fn repeat_packed(&self, n: usize) -> Result<Layout, LayoutErr>;
pub fn extend_packed(&self, next: Layout) -> Result<Layout, LayoutErr>;
pub fn array<T>(n: usize) -> Result<Layout, LayoutErr>;
```

cc #32838

r? @SimonSapin
2018-11-08 06:52:27 +00:00
Christopher Serr
a9b5988847 wasm32-unknown-emscripten expects the rust_eh_personality symbol
The `wasm32-unknown-emscripten` expects the `rust_eh_personality` symbol to be there, but a cfg checking for `target_arch = "wasm32"` which was meant to remove the symbol from the `wasm32-unknown-unknown` target, didn't check for whether `emscripten` is targeted or not, so the symbol accidentally got filtered out there as well.

Fixes #55276
2018-11-08 03:27:45 +01:00
bors
9c304fb0cf Auto merge of #55187 - malbarbo:fix-manifest, r=alexcrichton
Remove targets from the manifest that are not built on travis

Fixes https://github.com/rust-lang/rust/issues/55020
2018-11-08 01:10:10 +00:00
Alexander Regueiro
90a14389d1 Removed DUPLICATE_ASSOCIATED_TYPE_BINDINGS lint.
This has been replaced by the hard error E0719.
2018-11-07 21:57:45 +00:00
Alexander Regueiro
7d9ee0314a Only do check for trait objects, not trait or trait alias definitions. 2018-11-07 21:57:45 +00:00
Alexander Regueiro
6d3ee4170d Added error for duplicate bindings of associated type. 2018-11-07 21:57:45 +00:00