]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAdd a static assertion about the size of `ast::Expr`.
Nicholas Nethercote [Thu, 8 Nov 2018 23:10:46 +0000 (10:10 +1100)]
Add a static assertion about the size of `ast::Expr`.

5 years agoMove a `static_assert!` to a better spot.
Nicholas Nethercote [Thu, 8 Nov 2018 23:19:51 +0000 (10:19 +1100)]
Move a `static_assert!` to a better spot.

And make it x86_64-only so it can use `==` instead of `<=`.

5 years agoMove `static_assert!` into librustc_data_structures.
Nicholas Nethercote [Thu, 8 Nov 2018 22:57:02 +0000 (09:57 +1100)]
Move `static_assert!` into librustc_data_structures.

This means it can be used by more crates.

5 years agoAuto merge of #55278 - Centril:constification-1, r=alexcrichton
bors [Mon, 12 Nov 2018 18:54:11 +0000 (18:54 +0000)]
Auto merge of #55278 - Centril:constification-1, r=alexcrichton

Minor standard library constification

This PR makes some bits of the standard library into `const fn`s.
I've tried to be as aggressive as I possibly could in the constification.
The list is rather small due to how restrictive `const fn` is at the moment.

r? @oli-obk cc @rust-lang/libs

Stable public APIs affected:
+ [x] `Cell::as_ptr`
+ [x] `UnsafeCell::get`
+ [x] `char::is_ascii`
+ [x] `iter::empty`
+ [x] `ManuallyDrop::{new, into_inner}`
+ [x] `RangeInclusive::{start, end}`
+ [x] `NonNull::as_ptr`
+ [x] `{[T], str}::as_ptr`
+ [x] `Duration::{as_secs, subsec_millis, subsec_micros, subsec_nanos}`
+ [x] `CStr::as_ptr`
+ [x] `Ipv4Addr::is_unspecified`
+ [x] `Ipv6Addr::new`
+ [x] `Ipv6Addr::octets`

Unstable public APIs affected:
+ [x] `Duration::{as_millis, as_micros, as_nanos, as_float_secs}`
+ [x] `Wrapping::{count_ones, count_zeros, trailing_zeros, rotate_left, rotate_right, swap_bytes, reverse_bits, from_be, from_le, to_be, to_le, leading_zeros, is_positive, is_negative, leading_zeros}`
+ [x] `core::convert::identity`

--------------------------

## Removed from list in first pass:

Stable public APIs affected:
+ [ ] `BTree{Map, Set}::{len, is_empty}`
+ [ ] `VecDeque::is_empty`
+ [ ] `String::{is_empty, len}`
+ [ ] `FromUtf8Error::utf8_error`
+ [ ] `Vec<T>::{is_empty, len}`
+ [ ] `Layout::size`
+ [ ] `DecodeUtf16Error::unpaired_surrogate`
+ [ ] `core::fmt::{fill, width, precision, sign_plus, sign_minus, alternate, sign_aware_zero_pad}`
+ [ ] `panic::Location::{file, line, column}`
+ [ ] `{ChunksExact, RChunksExact}::remainder`
+ [ ] `Utf8Error::valid_up_to`
+ [ ] `VacantEntry::key`
+ [ ] `NulError::nul_position`
+ [ ] `IntoStringError::utf8_error`
+ [ ] `IntoInnerError::error`
+ [ ] `io::Chain::get_ref`
+ [ ] `io::Take::{limit, get_ref}`
+ [ ] `SocketAddrV6::{flowinfo, scope_id}`
+ [ ] `PrefixComponent::{kind, as_os_str}`
+ [ ] `Path::{ancestors, display}`
+ [ ] `WaitTimeoutResult::timed_out`
+ [ ] `Receiver::{iter, try_iter}`
+ [ ] `thread::JoinHandle::thread`
+ [ ] `SystemTimeError::duration`

Unstable public APIs affected:
+ [ ] `core::fmt::Arguments::new_v1`
+ [ ] `core::fmt::Arguments::new_v1_formatted`
+ [ ] `Pin::{get_ref, into_ref}`
+ [ ] `Utf8Lossy::chunks`
+ [ ] `LocalWaker::as_waker`
+ [ ] `panic::PanicInfo::{internal_constructor, message, location}`
+ [ ] `panic::Location::{internal_constructor }`

## Removed from list in 2nd pass:

Stable public APIs affected:
+ [ ] `LinkedList::{new, iter, is_empty, len}`
+ [ ] `mem::forget`
+ [ ] `Cursor::{new, get_ref, position}`
+ [ ] `io::{empty, repeat, sink}`
+ [ ] `PoisonError::new`
+ [ ] `thread::Builder::new`
+ [ ] `process::Stdio::{piped, inherit, null}`

Unstable public APIs affected:
+ [ ] `io::Initializer::{zeroing, should_initialize}`

5 years agoUpdate docs
Stjepan Glavina [Mon, 12 Nov 2018 17:36:49 +0000 (18:36 +0100)]
Update docs

5 years agoAdd forget_unsized only
Stjepan Glavina [Mon, 12 Nov 2018 16:19:55 +0000 (17:19 +0100)]
Add forget_unsized only

5 years agoDeduplicate field and variant visitor methods
Oliver Scherer [Thu, 8 Nov 2018 16:06:27 +0000 (17:06 +0100)]
Deduplicate field and variant visitor methods

5 years agomiri-engine value visitor update to VariantIdx
Oliver Scherer [Wed, 7 Nov 2018 15:45:07 +0000 (16:45 +0100)]
miri-engine value visitor update to VariantIdx

5 years agoUse type safe `VariantIdx` instead of `usize` everywhere
Oliver Scherer [Thu, 1 Nov 2018 18:03:38 +0000 (19:03 +0100)]
Use type safe `VariantIdx` instead of `usize` everywhere

5 years agoUse IndexVec instead of `usize` in librustc
Oliver Scherer [Thu, 1 Nov 2018 15:01:24 +0000 (16:01 +0100)]
Use IndexVec instead of `usize` in librustc

5 years agoShrink some internal enums
Oliver Scherer [Thu, 1 Nov 2018 12:30:04 +0000 (13:30 +0100)]
Shrink some internal enums

5 years agoMerge an assert + cast into a `try_into` call
Oliver Scherer [Wed, 31 Oct 2018 10:06:38 +0000 (11:06 +0100)]
Merge an assert + cast into a `try_into` call

5 years agoDocument optimizations enabled by FusedIterator
Simon Sapin [Mon, 12 Nov 2018 11:22:33 +0000 (12:22 +0100)]
Document optimizations enabled by FusedIterator

When reading this I wondered what “some significant optimizations” referred to. As far as I can tell, the specialization of `.fuse()` is the only case where `FusedIterator` has any impact at all. Is this accurate @Stebalien?

5 years agoFix fallout it rustc_driver tests
Oliver Scherer [Fri, 9 Nov 2018 10:00:51 +0000 (11:00 +0100)]
Fix fallout it rustc_driver tests

5 years agoTypo nit
Oliver Scherer [Fri, 9 Nov 2018 10:00:39 +0000 (11:00 +0100)]
Typo nit

5 years agoFix fulldeps test with NodeId
Oliver Scherer [Thu, 8 Nov 2018 17:23:52 +0000 (18:23 +0100)]
Fix fulldeps test with NodeId

5 years agoReintroduce the original debug formatting for NodeIds
Oliver Scherer [Thu, 8 Nov 2018 14:00:55 +0000 (15:00 +0100)]
Reintroduce the original debug formatting for NodeIds

5 years agoFix rustdoc
Oliver Scherer [Thu, 8 Nov 2018 09:44:40 +0000 (10:44 +0100)]
Fix rustdoc

5 years agoTurn `HirLocalId` into a `newtype_index`
Oliver Scherer [Wed, 7 Nov 2018 10:01:18 +0000 (11:01 +0100)]
Turn `HirLocalId` into a `newtype_index`

5 years agoMake `NodeId` a `newtype_index` to enable niche optimizations
Oliver Scherer [Wed, 7 Nov 2018 09:08:41 +0000 (10:08 +0100)]
Make `NodeId` a `newtype_index` to enable niche optimizations

5 years agoremove unused import
Ralf Jung [Mon, 12 Nov 2018 08:11:29 +0000 (09:11 +0100)]
remove unused import

5 years agoAuto merge of #55604 - nnethercote:avoid-associated_items-Box, r=nnethercote
bors [Mon, 12 Nov 2018 08:03:58 +0000 (08:03 +0000)]
Auto merge of #55604 - nnethercote:avoid-associated_items-Box, r=nnethercote

Avoid the Box in `TyCtxt::associated_items`.

This reduces instruction counts on `packed_simd` by 2%.

r? @nikomatsakis

5 years agoglobal allocators: add a few comments
Ralf Jung [Mon, 12 Nov 2018 08:00:39 +0000 (09:00 +0100)]
global allocators: add a few comments

5 years agofor uniformity, also move memory_deallocated to AllocationExtra
Ralf Jung [Mon, 12 Nov 2018 07:39:13 +0000 (08:39 +0100)]
for uniformity, also move memory_deallocated to AllocationExtra

5 years agoAvoid the Box in `TyCtxt::associated_items`.
Niko Matsakis [Mon, 5 Nov 2018 05:18:23 +0000 (16:18 +1100)]
Avoid the Box in `TyCtxt::associated_items`.

This reduces instruction counts on packed_simd by 2%.

5 years agoChange `Lit::short_name` to `Lit::literal_name`.
Nicholas Nethercote [Mon, 12 Nov 2018 03:38:44 +0000 (14:38 +1100)]
Change `Lit::short_name` to `Lit::literal_name`.

This avoids a moderately hot allocation in `parse_lit_token`.

5 years agoAuto merge of #55701 - tromey:ice-fix, r=matthewjasper
bors [Mon, 12 Nov 2018 04:12:26 +0000 (04:12 +0000)]
Auto merge of #55701 - tromey:ice-fix, r=matthewjasper

Fix emission of niche-filling discriminant values

Bug #55606 points out a regression introduced by #54004; namely that
an assertion can erroneously fire when a niche-filling discriminant
value is emitted.

This fixes the bug by removing the assertion, and furthermore by
arranging for the discriminant value to be masked according to the
size of the niche.  This makes handling the discriminant a bit simpler
for debuggers.

The test case is from Jonathan Turner.

Closes #55606

5 years agoFix TLS errors when downloading stage0
Dan Robertson [Mon, 12 Nov 2018 10:32:21 +0000 (02:32 -0800)]
Fix TLS errors when downloading stage0

5 years agoReference count `crate_inherent_impls`s return value.
Hugo van der Wijst [Mon, 12 Nov 2018 00:25:00 +0000 (16:25 -0800)]
Reference count `crate_inherent_impls`s return value.

The repeated cloning of the result in `inherent_impls` queries has quite
an impact on crates with many inherent trait implementations.

5 years agoAuto merge of #55525 - nnethercote:MatcherPos-stack-SmallVec, r=nnethercote
bors [Mon, 12 Nov 2018 01:20:33 +0000 (01:20 +0000)]
Auto merge of #55525 - nnethercote:MatcherPos-stack-SmallVec, r=nnethercote

Make `MatcherPos::stack` a `SmallVec`.

This avoids some allocations.

This seems like a trivial change, but the compiler rejects it:
```
   Compiling syntax v0.0.0 (/home/njn/moz/rust1/src/libsyntax)
error[E0597]: `initial` does not live long enough=========>           ] 89/110: syntax
   --> libsyntax/ext/tt/macro_parser.rs:647:57
    |
647 |     let mut cur_items = smallvec![MatcherPosHandle::Ref(&mut initial)];
    |                                                         ^^^^^^^^^^^^ borrowed value does not live long enough
...
762 | }
    | -
    | |
    | `initial` dropped here while still borrowed
    | borrow later used here, when `initial` is dropped

error: aborting due to previous error
```
This is either a compiler bug, or there's some subtle thing I don't understand. The lifetimes sure seem straightforward: `initial` is declared, and then `cur_items` is declared immediately afterward, and it uses a reference to `initial`. The error message makes it sound like the compiler is dropping the variables in the wrong order.

r? @nikomatsakis, any idea what the problem is?

5 years agoMake `MatcherPos::stack` a `SmallVec`.
Niko Matsakis [Sun, 11 Nov 2018 22:18:57 +0000 (09:18 +1100)]
Make `MatcherPos::stack` a `SmallVec`.

This avoids some allocations.

5 years agoAuto merge of #55698 - nikic:remove-llvm-4-support, r=alexcrichton
bors [Sun, 11 Nov 2018 22:38:54 +0000 (22:38 +0000)]
Auto merge of #55698 - nikic:remove-llvm-4-support, r=alexcrichton

Remove support for building against LLVM 4

With emscripten removed in #55626, we no longer need to support building against LLVM 4.

5 years agosave-analysis: Don't panic for macro-generated use globs
Igor Matuszewski [Sun, 11 Nov 2018 20:05:09 +0000 (21:05 +0100)]
save-analysis: Don't panic for macro-generated use globs

Follow-up to
https://github.com/rust-lang/rust/commit/c2bb7cadf24e82b80f403c09e800fe5fad504caf.

5 years agoAuto merge of #55660 - alexcrichton:cleanup-alloc-system, r=dtolnay,SimonSapin
bors [Sun, 11 Nov 2018 19:51:56 +0000 (19:51 +0000)]
Auto merge of #55660 - alexcrichton:cleanup-alloc-system, r=dtolnay,SimonSapin

Remove the `alloc_system` crate

In what's hopefully one of the final nails in the coffin of the "old allocator story of yore" this PR deletes the `alloc_system` crate and all traces of it from the compiler. The compiler no longer needs to inject allocator crates anywhere and the `alloc_system` crate has no real reason to exist outside the standard library.

The unstable `alloc_system` crate is folded directly into the standard library where its stable interface, the `System` type, remains the same. All unstable traces of `alloc_system` are removed, however.

5 years agoMinor style guide corrections.
Denis Vasilik [Sun, 11 Nov 2018 19:11:25 +0000 (20:11 +0100)]
Minor style guide corrections.

5 years agostd: Delete the `alloc_system` crate
Alex Crichton [Sat, 3 Nov 2018 18:15:48 +0000 (11:15 -0700)]
std: Delete the `alloc_system` crate

This commit deletes the `alloc_system` crate from the standard
distribution. This unstable crate is no longer needed in the modern
stable global allocator world, but rather its functionality is folded
directly into the standard library. The standard library was already the
only stable location to access this crate, and as a result this should
not affect any stable code.

5 years agorustc: Clean up allocator injection logic
Alex Crichton [Sat, 3 Nov 2018 17:51:31 +0000 (10:51 -0700)]
rustc: Clean up allocator injection logic

This commit cleans up allocator injection logic found in the compiler
around selecting the global allocator. It turns out that now that
jemalloc is gone the compiler never actually injects anything! This
means that basically everything around loading crates here and there can
be easily pruned.

This also removes the `exe_allocation_crate` option from custom target
specs as it's no longer used by the compiler anywhere.

5 years agoAuto merge of #55657 - davidtwco:issue-55651, r=pnkfelix
bors [Sun, 11 Nov 2018 17:05:36 +0000 (17:05 +0000)]
Auto merge of #55657 - davidtwco:issue-55651, r=pnkfelix

NLL Diagnostic Review 3: Unions not reinitialized after assignment into field

Fixes #55651, #55652.

This PR makes two changes:

First, it updates the dataflow builder to add an init for the place
containing a union if there is an assignment into the field of
that union.

Second, it stops a "use of uninitialized" error occuring when there is an
assignment into the field of an uninitialized union that was previously
initialized. Making this assignment would re-initialize the union, as
tested in `src/test/ui/borrowck/borrowck-union-move-assign.nll.stderr`.
The check for previous initialization ensures that we do not start
supporting partial initialization yet (cc #21232, #54499, #54986).

This PR also fixes #55652 which was marked as requiring investigation
as the changes in this PR add an error that was previously missing
(and mentioned in the review comments) and confirms that the error
that was present is correct and a result of earlier partial
initialization changes in NLL.

r? @pnkfelix (due to earlier work with partial initialization)
cc @nikomatsakis

5 years agoWhitespace cleanup according to Rust's style guidelines.
Denis Vasilik [Sun, 11 Nov 2018 15:58:00 +0000 (16:58 +0100)]
Whitespace cleanup according to Rust's style guidelines.

5 years agoAdded comments for trait implementations.
Denis Vasilik [Sun, 11 Nov 2018 14:08:28 +0000 (15:08 +0100)]
Added comments for trait implementations.

5 years agoAdded comment for From trait implementation: boxed string slice to String
Denis Vasilik [Sat, 10 Nov 2018 09:23:11 +0000 (10:23 +0100)]
Added comment for From trait implementation: boxed string slice to String

5 years agoAuto merge of #55674 - oli-obk:miri_engine_refactoring, r=RalfJung
bors [Sun, 11 Nov 2018 14:24:39 +0000 (14:24 +0000)]
Auto merge of #55674 - oli-obk:miri_engine_refactoring, r=RalfJung

Miri engine refactoring

r? @RalfJung

split out the "just moves stuff around" part of https://github.com/rust-lang/rust/pull/55293

5 years agoFix typos.
Bruce Mitchener [Sun, 11 Nov 2018 13:52:36 +0000 (20:52 +0700)]
Fix typos.

5 years agodo not skip return code check in release builds
Ralf Jung [Sun, 11 Nov 2018 09:54:13 +0000 (10:54 +0100)]
do not skip return code check in release builds

5 years agochange attribute to stable
Axary [Sun, 11 Nov 2018 09:45:16 +0000 (10:45 +0100)]
change attribute to stable

5 years agoMerge branch 'master' of https://github.com/rust-lang/rust
Axary [Sun, 11 Nov 2018 09:41:49 +0000 (10:41 +0100)]
Merge branch 'master' of https://github.com/rust-lang/rust

5 years agoUnix RwLock: avoid racy access to write_locked
Ralf Jung [Sun, 11 Nov 2018 09:06:41 +0000 (10:06 +0100)]
Unix RwLock: avoid racy access to write_locked

5 years agoFix a typo in std::panic
Dale Wijnand [Sun, 11 Nov 2018 07:36:10 +0000 (07:36 +0000)]
Fix a typo in std::panic

5 years agoAuto merge of #55859 - pietroalbini:rollup, r=kennytm
bors [Sun, 11 Nov 2018 06:26:21 +0000 (06:26 +0000)]
Auto merge of #55859 - pietroalbini:rollup, r=kennytm

Rollup of 17 pull requests

Successful merges:

 - #55630 (resolve: Filter away macro prelude in modules with `#[no_implicit_prelude]` on 2018 edition)
 - #55687 (Take supertraits into account when calculating associated types)
 - #55745 (Convert `outlives_components`' return value to a `SmallVec` outparam.)
 - #55764 (Fix Rc/Arc allocation layout)
 - #55792 (Prevent ICE in const-prop array oob check)
 - #55799 (Removed unneeded instance of `// revisions` from a lint test)
 - #55800 (Fix ICE in `return_type_impl_trait`)
 - #55801 (NLL: Update box insensitivity test)
 - #55802 (Don't inline virtual calls (take 2))
 - #55816 (Use `SmallVec` to avoid allocations in `from_decimal_string`.)
 - #55819 (Typecheck patterns of all match arms first, so we get types for bindings)
 - #55822 (ICE with #![feature(nll)] and elided lifetimes)
 - #55828 (Add missing `rustc_promotable` attribute to unsigned `min_value` and `max_value`)
 - #55839 (Fix docstring spelling mistakes)
 - #55844 (Fix documentation typos.)
 - #55845 (Set BINARYEN_TRAP_MODE=clamp)
 - #55856 (rustdoc: refactor: move all static-file include!s into a single module)

5 years agoRollup merge of #55856 - QuietMisdreavus:static-discharge, r=GuillaumeGomez
kennytm [Sun, 11 Nov 2018 04:34:23 +0000 (12:34 +0800)]
Rollup merge of #55856 - QuietMisdreavus:static-discharge, r=GuillaumeGomez

rustdoc: refactor: move all static-file include!s into a single module

This is a smaller refactor that creates a new module `rustdoc::html::static_files`, which contains a bunch of `static` variables with all the files in `html/static` that we use. The idea behind moving them all here was to remove the duplicate `include_bytes!()` that are used by the theme-checker code. It also continues to centralize more operations in rustdoc.

5 years agoRollup merge of #55845 - nikic:emscripten-clamp-mode, r=alexcrichton
kennytm [Sun, 11 Nov 2018 04:33:50 +0000 (12:33 +0800)]
Rollup merge of #55845 - nikic:emscripten-clamp-mode, r=alexcrichton

Set BINARYEN_TRAP_MODE=clamp

This fixes the wasm32-unknown-emscripten test failure mentioned in https://github.com/rust-lang/rust/pull/55626#issuecomment-437084774, by making binaryen operate in clamp rather than trap mode.

The issue is that the current `-Zsaturating-float-casts` implementation uses `fpto[us]i` unconditionally (and selects afterwards), which does not work with trapping implementations of fpto[su]i, which emscripten uses by default.

I've left a FIXME to drop this flag once we have a better solution for saturating casts on the LLVM side.
;

5 years agoRollup merge of #55630 - petrochenkov:noprelude, r=Centril
kennytm [Sun, 11 Nov 2018 04:32:01 +0000 (12:32 +0800)]
Rollup merge of #55630 - petrochenkov:noprelude, r=Centril

resolve: Filter away macro prelude in modules with `#[no_implicit_prelude]` on 2018 edition

This is a tiny thing.
For historical reasons macro prelude (macros from `#[macro_use] extern crate ...`, including `extern crate std`) is still available in modules with `#[no_implicit_prelude]`.
This PR provides proper isolation and removes those names from scope.

`#[no_implicit_prelude]` modules still have built-in types (`u8`), built-in attributes (`#[inline]`) and built-in macros (`env!("PATH")`) in scope. We can introduce some `#[no_implicit_prelude_at_all]` to remove those as well, but that's a separate issue.

The change is done only on 2018 edition for backward compatibility.
I'm pretty sure this can be done on 2015 as well because `#[no_implicit_prelude]` is rarely used, but I don't want to go through the crater/deprecation process right now, maybe later.

cc https://github.com/rust-lang/rust/issues/53977
r? @ghost

5 years agoAuto merge of #54993 - TimNN:pda-tdl, r=eddyb
bors [Sun, 11 Nov 2018 03:44:16 +0000 (03:44 +0000)]
Auto merge of #54993 - TimNN:pda-tdl, r=eddyb

Support for the program data address space option of LLVM's Target Datalayout

This was introduced recently (specifically, for AVR, cc @dylanmckay).

(I came up with this when attempting to run [avr-rust](https://github.com/avr-rust/rust) rebased on the latest [rust-lang](https://github.com/rust-lang/rust) commits. If this requires a different design, some additional discussions, or is not something to pursue right now, I'd be happy to close this PR).

Note that this somewhat overlaps with @DiamondLovesYou's #51576, I think, although the implementation here is significantly simpler: Since the address space applies to _all_ program data, we can just check the pointee's type whenever we create an LLVM pointer type. If it is a function we use the program data address space; if not we use the default address space.

cc @eddyb, who has been reviewing #51576

Ref: https://llvm.org/docs/LangRef.html#data-layout

5 years agoRollup merge of #55844 - waywardmonkeys:typo-fixes, r=varkor
Pietro Albini [Sat, 10 Nov 2018 23:21:25 +0000 (00:21 +0100)]
Rollup merge of #55844 - waywardmonkeys:typo-fixes, r=varkor

Fix documentation typos.

5 years agoRollup merge of #55839 - dralley:docstring-spelling, r=TimNN
Pietro Albini [Sat, 10 Nov 2018 23:21:24 +0000 (00:21 +0100)]
Rollup merge of #55839 - dralley:docstring-spelling, r=TimNN

Fix docstring spelling mistakes

5 years agoRollup merge of #55828 - oli-obk:promotion_strikes_again, r=eddyb
Pietro Albini [Sat, 10 Nov 2018 23:21:23 +0000 (00:21 +0100)]
Rollup merge of #55828 - oli-obk:promotion_strikes_again, r=eddyb

Add missing `rustc_promotable` attribute to unsigned `min_value` and `max_value`

cc @pnkfelix

fixes #55806

5 years agoRollup merge of #55822 - davidtwco:issue-55394, r=pnkfelix
Pietro Albini [Sat, 10 Nov 2018 23:21:22 +0000 (00:21 +0100)]
Rollup merge of #55822 - davidtwco:issue-55394, r=pnkfelix

ICE with #![feature(nll)] and elided lifetimes

Fixes #55394.

This commit fixes an ICE and determines the correct return span in cases
with a method implemented on a struct with an an elided lifetime.

r? @pnkfelix

5 years agoRollup merge of #55819 - pnkfelix:issue-55810-must-typeck-pats-eagerly, r=oli-obk
Pietro Albini [Sat, 10 Nov 2018 23:21:21 +0000 (00:21 +0100)]
Rollup merge of #55819 - pnkfelix:issue-55810-must-typeck-pats-eagerly, r=oli-obk

Typecheck patterns of all match arms first, so we get types for bindings

Fix eventually (after backport to beta) the issue #55810

5 years agoRollup merge of #55816 - nnethercote:from_decimal_string-SmallVec, r=oli-obk
Pietro Albini [Sat, 10 Nov 2018 23:21:20 +0000 (00:21 +0100)]
Rollup merge of #55816 - nnethercote:from_decimal_string-SmallVec, r=oli-obk

Use `SmallVec` to avoid allocations in `from_decimal_string`.

This reduces the number of allocations in a "check clean" build of
`tuple-stress` by 14%, reducing instruction counts by 0.6%.

5 years agoRollup merge of #55802 - wesleywiser:inlined_calls_2_electric_boogaloo, r=nagisa
Pietro Albini [Sat, 10 Nov 2018 23:21:19 +0000 (00:21 +0100)]
Rollup merge of #55802 - wesleywiser:inlined_calls_2_electric_boogaloo, r=nagisa

Don't inline virtual calls (take 2)

When I fixed the previous mis-optimizations, I didn't realize there were
actually two different places where we mutate `callsites` and both of
them should have the same behavior.

As a result, if a function was inlined and that function contained
virtual function calls, they were incorrectly being inlined. I also
added a test case which covers this.

5 years agoRollup merge of #55801 - pnkfelix:update-box-insensitivity-test-for-nll, r=davidtwco
Pietro Albini [Sat, 10 Nov 2018 23:21:17 +0000 (00:21 +0100)]
Rollup merge of #55801 - pnkfelix:update-box-insensitivity-test-for-nll, r=davidtwco

NLL: Update box insensitivity test

This is just keeping one of our tests honest with respect to NLL, in two ways:

 1. Adds uses of borrows that would otherwise be too short to observe the error that we would have expected to see...
 2. ... I say "would have expected" because all of the errors in this file are part of the reversion of rust-lang/rfcs#130 that is attached to NLL (you can see more discussion of this here https://github.com/rust-lang/rust/issues/43234#issuecomment-411017768 )

5 years agoRollup merge of #55800 - estebank:abolish-ice-for-lifetime, r=oli-obk
Pietro Albini [Sat, 10 Nov 2018 23:21:16 +0000 (00:21 +0100)]
Rollup merge of #55800 - estebank:abolish-ice-for-lifetime, r=oli-obk

Fix ICE in `return_type_impl_trait`

Fix #55796.

5 years agoRollup merge of #55799 - pnkfelix:remove-useless-revisions-marker-from-lint-unused...
Pietro Albini [Sat, 10 Nov 2018 23:21:15 +0000 (00:21 +0100)]
Rollup merge of #55799 - pnkfelix:remove-useless-revisions-marker-from-lint-unused-mut-variables, r=davidtwco

Removed unneeded instance of `// revisions` from a lint test

Removed an unneeded instance of `// revisions`; the compare-mode=nll shows the output is identical now.

cc #54528

5 years agoRollup merge of #55792 - oli-obk:propsicle, r=RalfJung
Pietro Albini [Sat, 10 Nov 2018 23:21:14 +0000 (00:21 +0100)]
Rollup merge of #55792 - oli-obk:propsicle, r=RalfJung

Prevent ICE in const-prop array oob check

fixes https://github.com/rust-lang/rust/issues/55772
fixes https://github.com/rust-lang/rust/issues/54541

5 years agoRollup merge of #55764 - murarth:fix-rc-alloc, r=RalfJung
Pietro Albini [Sat, 10 Nov 2018 23:21:13 +0000 (00:21 +0100)]
Rollup merge of #55764 - murarth:fix-rc-alloc, r=RalfJung

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

Closes #55747

cc #55724

5 years agoRollup merge of #55745 - nnethercote:outlives_components-SmallVec, r=matthewjasper
Pietro Albini [Sat, 10 Nov 2018 23:21:12 +0000 (00:21 +0100)]
Rollup merge of #55745 - nnethercote:outlives_components-SmallVec, r=matthewjasper

Convert `outlives_components`' return value to a `SmallVec` outparam.

This avoids some allocations, reducing instruction counts by 1% on a
couple of benchmarks.

5 years agoRollup merge of #55687 - alexreg:fix-24010, r=scalexm
Pietro Albini [Sat, 10 Nov 2018 23:21:11 +0000 (00:21 +0100)]
Rollup merge of #55687 - alexreg:fix-24010, r=scalexm

Take supertraits into account when calculating associated types

Fixes #24010 and #23856. Applies to trait aliases too.

As a by-product, this PR also makes repeated bindings of the same associated item in the same definition a hard error. This was previously a warning with a note about it becoming a hard error in the future. See #50589 for more info.

I talked about this with @nikomatsakis recently, but only very superficially, so this shouldn't stop anyone from assigning it to themself to review and r+.

N.B. The "WIP" commits represent imperfect attempts to solve the problem just for trait objects, but I've left them in for reference for the sake of whomever is reviewing this.

CC @carllerche @theemathas @durka @mbrubeck

5 years agoAuto merge of #54864 - ljedrz:cleanup_codegen_llvm_back, r=Mark-Simulacrum
bors [Sat, 10 Nov 2018 23:16:25 +0000 (23:16 +0000)]
Auto merge of #54864 - ljedrz:cleanup_codegen_llvm_back, r=Mark-Simulacrum

Cleanup codegen_llvm/back

- improve allocations
- use `Cow<'static, str>` where applicable
- use `to_owned` instead of `to_string` with string literals
- remove a redundant `continue`
- possible minor speedup in logic
- use `mem::replace` instead of `swap` where more concise
- remove `'static` from consts
- improve common patterns
- remove explicit `return`s
- whitespace & formatting fixes

5 years agomove all static-file include!s into a single module
QuietMisdreavus [Sat, 10 Nov 2018 22:05:29 +0000 (16:05 -0600)]
move all static-file include!s into a single module

5 years agoUse non-short suggestion for parenthesised ..=
varkor [Sat, 10 Nov 2018 21:27:40 +0000 (21:27 +0000)]
Use non-short suggestion for parenthesised ..=

5 years agoSmall fixes on code blocks in rustdoc
Guillaume Gomez [Sat, 10 Nov 2018 20:58:47 +0000 (21:58 +0100)]
Small fixes on code blocks in rustdoc

5 years agoAuto merge of #55650 - nikic:funnel-shift, r=nagisa
bors [Sat, 10 Nov 2018 19:58:14 +0000 (19:58 +0000)]
Auto merge of #55650 - nikic:funnel-shift, r=nagisa

Implement rotate using funnel shift on LLVM >= 7

Implement the rotate_left and rotate_right operations using
llvm.fshl and llvm.fshr if they are available (LLVM >= 7).

Originally I wanted to expose the funnel_shift_left and
funnel_shift_right intrinsics and implement rotate_left and
rotate_right on top of them. However, emulation of funnel
shifts requires emitting a conditional to check for zero shift
amount, which is not necessary for rotates. I was uncomfortable
doing that here, as I don't want to rely on LLVM to optimize
away that conditional (and for variable rotates, I'm not sure it
can). We should revisit that question when we raise our minimum
version requirement to LLVM 7 and don't need emulation code
anymore.

Fixes #52457.

5 years agoRewrite `...` as `..=` as a MachineApplicable 2018 idiom lint
varkor [Sat, 10 Nov 2018 18:08:50 +0000 (18:08 +0000)]
Rewrite `...` as `..=` as a MachineApplicable 2018 idiom lint

5 years agocodegen_llvm_back: simplify a conversion to char
ljedrz [Mon, 29 Oct 2018 09:19:09 +0000 (10:19 +0100)]
codegen_llvm_back: simplify a conversion to char

5 years agocodegen_llvm_back: remove a redundant continue
ljedrz [Sat, 6 Oct 2018 09:53:23 +0000 (11:53 +0200)]
codegen_llvm_back: remove a redundant continue

5 years agocodegen_llvm_back: possible minor speedup in logic
ljedrz [Sat, 6 Oct 2018 09:52:53 +0000 (11:52 +0200)]
codegen_llvm_back: possible minor speedup in logic

5 years agocodegen_llvm_back: use mem::replace instead of swap where more concise
ljedrz [Sat, 6 Oct 2018 09:51:14 +0000 (11:51 +0200)]
codegen_llvm_back: use mem::replace instead of swap where more concise

5 years agocodegen_llvm_back: remove 'static from consts
ljedrz [Sat, 6 Oct 2018 09:50:34 +0000 (11:50 +0200)]
codegen_llvm_back: remove 'static from consts

5 years agocodegen_llvm_back: use to_owned instead of to_string with string literals
ljedrz [Sat, 6 Oct 2018 09:50:00 +0000 (11:50 +0200)]
codegen_llvm_back: use to_owned instead of to_string with string literals

5 years agocodegen_llvm_back: improve common patterns
ljedrz [Sat, 6 Oct 2018 09:49:03 +0000 (11:49 +0200)]
codegen_llvm_back: improve common patterns

5 years agocodegen_llvm_back: remove explicit returns
ljedrz [Sat, 6 Oct 2018 09:46:46 +0000 (11:46 +0200)]
codegen_llvm_back: remove explicit returns

5 years agocodegen_llvm_back: use Cow<'static, str> where applicable
ljedrz [Sat, 6 Oct 2018 09:42:14 +0000 (11:42 +0200)]
codegen_llvm_back: use Cow<'static, str> where applicable

5 years agocodegen_llvm_back: whitespace & formatting fixes
ljedrz [Sat, 6 Oct 2018 09:37:28 +0000 (11:37 +0200)]
codegen_llvm_back: whitespace & formatting fixes

5 years agoRemove short doc where it starts with a codeblock
Guillaume Gomez [Tue, 16 Oct 2018 18:21:34 +0000 (20:21 +0200)]
Remove short doc where it starts with a codeblock

5 years agoAvoid converting bytes to UTF-8 strings to print, just pass bytes to stdout/err
Santiago Pastorino [Sat, 10 Nov 2018 17:16:04 +0000 (14:16 -0300)]
Avoid converting bytes to UTF-8 strings to print, just pass bytes to stdout/err

5 years agoSet BINARYEN_TRAP_MODE=clamp
Nikita Popov [Sat, 10 Nov 2018 13:09:49 +0000 (14:09 +0100)]
Set BINARYEN_TRAP_MODE=clamp

This avoids trapping in the -Zsaturating-float-casts implementation.

5 years agoFix documentation typos.
Bruce Mitchener [Sat, 10 Nov 2018 12:31:49 +0000 (19:31 +0700)]
Fix documentation typos.

5 years agoAuto merge of #55830 - alexcrichton:update-cargo, r=alexcrichton
bors [Sat, 10 Nov 2018 12:21:58 +0000 (12:21 +0000)]
Auto merge of #55830 - alexcrichton:update-cargo, r=alexcrichton

Update Cargo submodule

Hopefully a relatively routine update!

5 years agoadd FromIterator<A> to Box<[A]>
Axary [Sat, 10 Nov 2018 10:43:39 +0000 (11:43 +0100)]
add FromIterator<A> to Box<[A]>

5 years agoAuto merge of #55637 - pnkfelix:issue-55552-dont-attempt-to-ascribe-projections-out...
bors [Sat, 10 Nov 2018 09:38:10 +0000 (09:38 +0000)]
Auto merge of #55637 - pnkfelix:issue-55552-dont-attempt-to-ascribe-projections-out-of-a-ty-var, r=nikomatsakis

Do not attempt to ascribe projections out of a ty var

If we encounter `_` ascribed to structural pattern like `(a, b)`, just skip relate_types.

Fix #55552

5 years agoAuto merge of #55717 - oli-obk:rustdoc_overflow, r=pnkfelix
bors [Sat, 10 Nov 2018 07:03:04 +0000 (07:03 +0000)]
Auto merge of #55717 - oli-obk:rustdoc_overflow, r=pnkfelix

Bubble up an overflow error so that rustdoc can ignore it

fixes #54524

Idk how to write a test for this, other than trying to minimize the entire diesel crate. If desirable I will do that.

Note that there are many other such overflow errors hiding out there. Should we try to proactively eliminate them or do we just whack-a-mole them?

cc @GuillaumeGomez

r? @nikomatsakis

5 years agoFix docstring spelling mistakes
Daniel Alley [Sat, 10 Nov 2018 04:12:46 +0000 (23:12 -0500)]
Fix docstring spelling mistakes

5 years agoDon't inline virtual calls (take 2)
Wesley Wiser [Wed, 7 Nov 2018 03:31:09 +0000 (22:31 -0500)]
Don't inline virtual calls (take 2)

When I fixed the previous mis-optimizations, I didn't realize there were
actually two different places where we mutate `callsites` and both of
them should have the same behavior.

As a result, if a function was inlined and that function contained
virtual function calls, they were incorrectly being inlined. I also
added a test case which covers this.

5 years agomake PhantomData #[structural_match].
Mazdak Farrokhzad [Sat, 10 Nov 2018 02:39:42 +0000 (03:39 +0100)]
make PhantomData #[structural_match].

5 years agoadjust ui/../mod-static-with-const-fn.rs
Mazdak Farrokhzad [Sat, 10 Nov 2018 01:36:19 +0000 (02:36 +0100)]
adjust ui/../mod-static-with-const-fn.rs

5 years agorevert spurious edits.
Mazdak Farrokhzad [Sat, 10 Nov 2018 01:33:21 +0000 (02:33 +0100)]
revert spurious edits.

5 years agoAuto merge of #55626 - nikic:update-emscripten, r=alexcrichton
bors [Sat, 10 Nov 2018 01:16:02 +0000 (01:16 +0000)]
Auto merge of #55626 - nikic:update-emscripten, r=alexcrichton

Update emscripten

This updates emscripten to 1.38.15, which is based on LLVM 6.0.1 and would allow us to drop code for handling LLVM 4.

The main issue I ran into is that exporting statics through `EXPORTED_FUNCTIONS` no longer works. As far as I understand exporting non-functions doesn't really make sense under emscripten anyway, so I've modified the symbol export code to not even try.

Closes #52323.

5 years agoTidy ♪ all ♪ the ♪ way ♪♪♪♪ with ♪ a ♪ newline ♪ missing ♪ cry ♪♪
Oliver Scherer [Thu, 25 Oct 2018 20:10:41 +0000 (22:10 +0200)]
Tidy ♪ all ♪ the ♪ way ♪♪♪♪ with ♪ a ♪ newline ♪ missing ♪ cry ♪♪

5 years agoAdd a few tests around raw pointers and interior mutability
Oliver Scherer [Thu, 25 Oct 2018 18:53:05 +0000 (20:53 +0200)]
Add a few tests around raw pointers and interior mutability

5 years agorevert some more constification.
Mazdak Farrokhzad [Thu, 25 Oct 2018 17:37:52 +0000 (19:37 +0200)]
revert some more constification.