Commit Graph

87898 Commits

Author SHA1 Message Date
Shotaro Yamada
0aab437f3a Add MIR test 2018-12-17 16:53:22 +09:00
John Kåre Alsaker
f0adf5add4 Revert thread-local changes 2018-12-17 08:53:03 +01:00
John Kåre Alsaker
5a6a133f7e Remove *_inlined variants 2018-12-17 08:53:02 +01:00
John Kåre Alsaker
517725c571 Add a comment 2018-12-17 08:53:02 +01:00
John Kåre Alsaker
9d888eadc5 Rename await into cycle_error for the single threaded case and add some comments 2018-12-17 08:53:02 +01:00
John Kåre Alsaker
8e53ecff6c Turn some asserts into debug_asserts 2018-12-17 08:53:01 +01:00
John Kåre Alsaker
c66b84457f Tweak query code for performance 2018-12-17 08:53:01 +01:00
bors
7fb479c92b Auto merge of #56764 - sinkuu:simpcfg_bb0, r=matthewjasper
mir-opt: Make SimplifyCfg collapse goto chains starting from bb0

`SimplifyCfg` pass was not able to collapse goto chains starting from bb0, leaving MIR like this:

```
bb0: {
    goto -> bb1;
}
```
2018-12-17 06:34:04 +00:00
Shotaro Yamada
f0483f76e6 Remove <Cycle as Iterator>::try_fold override
It was a incorrect optimization.
2018-12-17 15:00:22 +09:00
bors
63f8e6e12b Auto merge of #56642 - nikic:llvm-6, r=alexcrichton
Bump minimum required LLVM version to 6.0

Based on the discussion in #55842, while the overall position of Rust wrt LLVM continues to be contentious, there does seem to be a consensus that there is no need for continued support of LLVM 5. This PR bumps our version requirement to LLVM 6.0 and makes Travis run against that.

I hope that this is going to unblock #52694. If I understand correctly, while this issue still exists in LLVM 6, Ubuntu has backported the relevant patch.

r? @alexcrichton
2018-12-17 04:18:14 +00:00
Matthew Russell
fca03e0140 Fix grammar in compiler error for array iterators 2018-12-17 02:27:41 +00:00
bors
c6fb01d629 Auto merge of #56737 - nnethercote:TokenStream-improvements, r=petrochenkov
`TokenStream` improvements

Some `TokenStream` improvements: shrinking `TokenStream` and some other types, and some other code clean-ups.
2018-12-17 01:48:23 +00:00
Ariel Ben-Yehuda
eeb8c8d59c cleanup deduce_expectations_from_obligations 2018-12-17 01:59:32 +02:00
Ariel Ben-Yehuda
f4dc1c5d64 fix review comments, round 2 2018-12-17 01:59:32 +02:00
Ariel Ben-Yehuda
78f7e854f9 address review comments 2018-12-17 01:59:32 +02:00
Ariel Ben-Yehuda
95bec6ed09 trigger unsized coercions keyed on Sized bounds
This PR causes unsized coercions to not be disabled by `$0: Unsize<dyn
Object>` coercion obligations when we have an `$0: Sized` obligation
somewhere.

Note that `X: Unsize<dyn Object>` obligations can't fail *as
obligations* if `X: Sized` holds, so this still maintains some version
of monotonicity (I think that an unsized coercion can't be converted to
no coercion by unifying type variables).

Fixes #49593 (unblocking never_type).
2018-12-17 01:59:32 +02:00
Alex Crichton
bbce189046 rustc: Update Clang used to build LLVM on LInux
This commit updates from LLVM 7.0.0 to git revisions of clang/llvm/lld
to build LLVM on our dist builders for Linux. The goal of this is to
fix #56849 by picking up a fix [1] in LLD.

Closes #56849

[1]: 3be4e82db7
2018-12-16 13:21:23 -08:00
bors
a8a2a887d0 Auto merge of #56875 - Centril:rollup, r=Centril
Rollup of 20 pull requests

Successful merges:

 - #53506 (Documentation for impl From for AtomicBool and other Atomic types)
 - #56343 (Remove not used mod)
 - #56439 (Clearer error message for dead assign)
 - #56640 (Add FreeBSD unsigned char platforms to std::os::raw)
 - #56648 (Fix BTreeMap UB)
 - #56672 (Document time of back operations of a Linked List)
 - #56706 (Make `const unsafe fn` bodies `unsafe`)
 - #56742 (infer: remove Box from a returned Iterator)
 - #56761 (Suggest using `.display()` when trying to print a `Path`)
 - #56781 (Update LLVM submodule)
 - #56789 (rustc: Add an unstable `simd_select_bitmask` intrinsic)
 - #56790 (Make RValue::Discriminant a normal Shallow read)
 - #56793 (rustdoc: look for comments when scraping attributes/crates from doctests)
 - #56826 (rustc: Add the `cmpxchg16b` target feature on x86/x86_64)
 - #56832 (std: Use `rustc_demangle` from crates.io)
 - #56844 (Improve CSS rule)
 - #56850 (Fixed issue with using `Self` ctor in typedefs)
 - #56855 (Remove u8 cttz hack)
 - #56857 (Fix a small mistake regarding NaNs in a deprecation message)
 - #56858 (Fix doc of `std::fs::canonicalize`)

Failed merges:

 - #56741 (treat ref-to-raw cast like a reborrow: do a special kind of retag)

r? @ghost
2018-12-16 20:58:09 +00:00
Peter Todd
d84bdba728 Add test to check order of repr(int) enum fields
RFC #2195 specifies that a repr(int) enum such as:

    #[repr(u8)]
    enum MyEnum {
        B { x: u8, y: i16, z: u8 },
    }

has a layout that is equivalent to:

    #[repr(C)]
    enum MyEnumVariantB { tag: u8, x: u8, y: i16, z: u8 },

However this isn't actually implemented, with the actual layout being
roughly equivalent to:

    union MyEnumPayload {
        B { x: u8, y: i16, z: u8 },
    }

    #[repr(packed)]
    struct MyEnum {
        tag: u8,
        payload: MyEnumPayload,
    }

Thus the variant payload is *not* subject to repr(C) ordering rules, and
gets re-ordered as `{ x: u8, z: u8, z: i16 }`

The existing tests added in pull-req #45688 fail to catch this as the
repr(C) ordering just happens to match the current Rust ordering in this
case; adding a third field reveals the problem.
2018-12-16 20:36:25 +01:00
Emilio Cobos Álvarez
fba23d01d1 Disable field reordering for repr(int). 2018-12-16 20:06:53 +01:00
bors
19dc2caf71 Auto merge of #56876 - GuillaumeGomez:fix-JS-errors, r=QuietMisdreavus
Fix js errors

Fix JS error (you can see it on the iterator doc page) and the invalid theme switch.

r? @QuietMisdreavus
2018-12-16 18:40:10 +00:00
Guillaume Gomez
b56cec0321 Add version display for associated consts 2018-12-16 18:40:10 +01:00
Amanieu d'Antras
cd70d7df7b Implement Eq, PartialEq and Hash for atomic::Ordering 2018-12-16 16:37:18 +00:00
Guillaume Gomez
fa9c8232d7 Fix invalid JS file generation 2018-12-16 15:16:06 +01:00
Mazdak Farrokhzad
6574d83dcf
Rollup merge of #56858 - tbu-:pr_doc_canonicalize, r=shepmaster
Fix doc of `std::fs::canonicalize`

Point out that the final component of the path name might be a filename
(and not a directory name). Previously, the doc said that all components
of the path must be directory names, when it actually only ment all but
the final one.

Fixes #54056.
2018-12-16 14:08:40 +01:00
Mazdak Farrokhzad
cee0bddd0a
Rollup merge of #56857 - tbu-:pr_doc_abssub, r=zackmdavis
Fix a small mistake regarding NaNs in a deprecation message

`max` on floats returns the other argument if one of them is NaN, which
would be `0.0` in this case. This is unlike the C functions `fdim` and
`fdimf` which return NaN if either of their arguments is NaN.

https://doc.rust-lang.org/1.31.0/std/primitive.f32.html#method.max
https://en.cppreference.com/w/c/numeric/math/fdim
2018-12-16 14:08:39 +01:00
Mazdak Farrokhzad
a777754c4d
Rollup merge of #56855 - nikic:remove-cttz-hack, r=nagisa
Remove u8 cttz hack

This issue has since been fixed in LLVM: 1886c8e29a

Furthermore this code doesn't actually work, because the 8 literal does not match the $BITS provided from the macro invocation, so effectively this was just dead code. Ref #43024.

What LLVM does is still not ideal for CPUs that only have bsf but not tzcnt, will create a patch for that later.

r? @nagisa
2018-12-16 14:08:37 +01:00
Mazdak Farrokhzad
8662946cee
Rollup merge of #56850 - alexreg:fix-self-in-typedefs, r=petrochenkov
Fixed issue with using `Self` ctor in typedefs

Added two regression tests.

This is definitely suitable for a beta backport.

CC @Centril
2018-12-16 14:08:36 +01:00
Mazdak Farrokhzad
75d4eda8c3
Rollup merge of #56844 - GuillaumeGomez:improve-css-rule, r=QuietMisdreavus
Improve CSS rule

Needed for #56819.

r? @QuietMisdreavus
2018-12-16 14:08:34 +01:00
Mazdak Farrokhzad
cbb5f13288
Rollup merge of #56832 - alexcrichton:external-demangle, r=Mark-Simulacrum
std: Use `rustc_demangle` from crates.io

No more need to duplicate the demangling routine between crates.io and
the standard library, we can use the exact same one!
2018-12-16 14:08:33 +01:00
Mazdak Farrokhzad
95d52a8724
Rollup merge of #56826 - alexcrichton:atomic-u128, r=gnzlbg
rustc: Add the `cmpxchg16b` target feature on x86/x86_64

This appears to be called `cx16` in LLVM and a few other locations, but
the Intel Intrinsic Guide doesn't have a name for this and the CPU
manual from Intel only mentions `cmpxchg16b`, so that's the name chosen
here.
2018-12-16 14:08:32 +01:00
Mazdak Farrokhzad
32a6a95f41
Rollup merge of #56793 - QuietMisdreavus:better-doctests, r=GuillaumeGomez
rustdoc: look for comments when scraping attributes/crates from doctests

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

When scraping out crate-level attributes and `extern crate` statements, we wouldn't look for comments, so any presence of comments would shunt it and everything after it into "everything else". This could cause parsing issues when looking for `fn main` and `extern crate my_crate` later on, which would in turn cause rustdoc to incorrectly wrap a test with `fn main` when it already had one declared.

I took the opportunity to clean up the logic a little bit, but it would still benefit from a libsyntax-based loop like the `fn main` detection.
2018-12-16 14:08:30 +01:00
Mazdak Farrokhzad
d91032a9ef
Rollup merge of #56790 - rust-lang:borrowck-niche-discriminants, r=nikomatsakis
Make RValue::Discriminant a normal Shallow read

Enum layout optimizations mean that the discriminant of an enum may not be stored in a tag disjoint from the rest of the fields of the enum. Stop borrow checking as though they are.

Run with MIRI to see why this is needed: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=09a3236685a06b6096e2e2e3968b852c.

This issue exists with the lexical borrow checker as well (see #45045) so migrate mode should prevent this from being immediately breaking.

r? @nikomatsakis

Fixes #56797
2018-12-16 14:08:29 +01:00
Mazdak Farrokhzad
f1fa9d4261
Rollup merge of #56789 - alexcrichton:simd_select_bitmask, r=rkruppe
rustc: Add an unstable `simd_select_bitmask` intrinsic

This is going to be required for binding a number of AVX-512 intrinsics
in the `stdsimd` repository, and this intrinsic is the same as
`simd_select` except that it takes a bitmask as the first argument
instead of a SIMD vector. This bitmask is then transmuted into a `<NN x
i8>` argument, depending on how many bits it is.

cc rust-lang-nursery/stdsimd#310
2018-12-16 14:08:28 +01:00
Mazdak Farrokhzad
c269468eb9
Rollup merge of #56781 - nikic:llvm-update, r=alexcrichton
Update LLVM submodule

Fixes #52026.
Fixes #56618.

r? @alexcrichton
2018-12-16 14:08:27 +01:00
Mazdak Farrokhzad
c52a13dcdf
Rollup merge of #56761 - estebank:path-display, r=zackmdavis
Suggest using `.display()` when trying to print a `Path`

Fix #38997.
2018-12-16 14:08:25 +01:00
Mazdak Farrokhzad
af3f9072f5
Rollup merge of #56742 - ljedrz:remove_query_response_box, r=oli-obk
infer: remove Box from a returned Iterator
2018-12-16 14:08:24 +01:00
Mazdak Farrokhzad
3552499010
Rollup merge of #56706 - oli-obk:const_unsafe_fn, r=Centril
Make `const unsafe fn` bodies `unsafe`

r? @Centril

Updated for tracking issue discussion https://github.com/rust-lang/rust/issues/55607#issuecomment-445882296
2018-12-16 14:08:22 +01:00
Mazdak Farrokhzad
c69ed5e5e9
Rollup merge of #56672 - ccouzens:master, r=nikic
Document time of back operations of a Linked List

Popping and pushing from the end of a linked list is constant time. This
documentation is already there for popping and pushing from the front.

@bors: r+ 38fe8d2 rollup
2018-12-16 14:08:21 +01:00
Mazdak Farrokhzad
9133798b92
Rollup merge of #56648 - RalfJung:btree, r=sfackler
Fix BTreeMap UB

BTreeMap currently causes UB by created a shared reference to a too-small allocation.  This PR fixes that by introducing a `NodeHeader` type and using that until we really need access to the key/value arrays.  Avoiding run-time checks in `into_key_slice` was somewhat tricky, see the comments embedded in the code.

I also adjusted `as_leaf_mut` to return a raw pointer, because creating a mutable reference asserts that there are no aliases to the pointee, but that's not always correct: We use `as_leaf_mut` twice to create two mutable slices for keys and values; the second call overlaps with the first slice and hence is not a unique pointer.

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

Cc @nikomatsakis @Gankro
2018-12-16 14:08:19 +01:00
Mazdak Farrokhzad
32f922e526
Rollup merge of #56640 - myfreeweb:patch-1, r=alexcrichton
Add FreeBSD unsigned char platforms to std::os::raw

Reference: https://www.freebsd.org/cgi/man.cgi?query=arch&apropos=0&sektion=7
2018-12-16 14:08:17 +01:00
Mazdak Farrokhzad
6ec6f48769
Rollup merge of #56439 - JohnGinger:master, r=nikomatsakis
Clearer error message for dead assign

I'm not that this is the right place for this (if it needs an RFC or not).

I had the problem where I misunderstood the compiler lint message https://github.com/rust-lang/rust/issues/56436 and other people seem to have had the same problem https://www.reddit.com/r/rust/comments/8cy9p4/value_assigned_to_is_never_read/.

I think this new wording might be slightly clearer (and help out beginners like me). I'm very new though, so there might be some nuance I'm missing that would make this more confusing or a bad idea for other reasons.

I thought I would create a PR to make it easy to change the code if the consensus was that it would make sense to make a change.

If this is the wrong place for this sort of thing I'll happily delete/move it.
2018-12-16 14:08:16 +01:00
Mazdak Farrokhzad
cdadb72a33
Rollup merge of #56343 - yui-knk:remove_mir_stats_mod, r=nikomatsakis
Remove not used mod

`mir_stats` mod has not been used since c1ff10464d.
2018-12-16 14:08:15 +01:00
Mazdak Farrokhzad
443881a37b
Rollup merge of #53506 - phungleson:fix-from-docs-atomic, r=KodrAus
Documentation for impl From for AtomicBool and other Atomic types

As part of issue #51430 (cc @skade).

The impl is very simple, so not sure if we need to go into any details.
2018-12-16 14:08:13 +01:00
Guillaume Gomez
b998995813 Fix js errors 2018-12-16 13:45:46 +01:00
Scott McMurray
0815531488 Add a note about why the unsafe is sound 2018-12-15 16:33:23 -08:00
bors
748d354af3 Auto merge of #56600 - ljedrz:fix_edition, r=Mark-Simulacrum
bootstrap: fix edition

A byproduct of work on https://github.com/rust-lang/rust/pull/56595; done with `cargo fix --edition`.
2018-12-15 23:50:47 +00:00
Ariel Ben-Yehuda
baf9f0173c fix trait objects with a Self-having projection va
This follows ALT2 in the issue.

Fixes #56288.
2018-12-16 00:00:46 +02:00
Ariel Ben-Yehuda
c4fa1d2c47 stop treating trait objects from #[fundamental] traits as fundamental
Fixes #56503.
2018-12-15 23:45:37 +02:00
bors
93c2f055ba Auto merge of #56203 - aheart:master, r=varkor
Add lint for items deprecated in future

Resolves #55892
2018-12-15 21:34:22 +00:00