Commit Graph

88171 Commits

Author SHA1 Message Date
Esteban Küber
25b3c82508 Do not point at delim spans for complete correct blocks 2018-12-17 10:22:49 -08:00
Dan Robertson
e7e17f9d1b
static eval: Do not ICE on layout size overflow
Layout size overflow and typeck eval errors are reported. Trigger a bug
only when the eval error is strictly labeled as TooGeneric.
2018-12-17 17:45:14 +00:00
Alex Crichton
a0b766d584 rustc: Don't ICE on usage of two new target features
I seem to always forget to update this portion of the compiler...
2018-12-17 08:47:03 -08:00
David Wood
7b628e18a3
Add required lifetime parameter to BitDenotation.
This avoids all sorts of confusing issues with using both `dest_place`
and `self` in the `propagate_call_return` function in the
`BitDenotation` implementation for `Borrows`.
2018-12-17 17:26:24 +01:00
bors
adbfec229c Auto merge of #56904 - sinkuu:cycle_fold, r=bluss
Remove Cycle::try_fold override

Fixes #56883
2018-12-17 16:01:46 +00:00
Oliver Scherer
3e7a4ca2f1 Remove a wrong multiplier on relocation offset computation 2018-12-17 16:47:26 +01:00
ljedrz
826cda6640 profiler: improve readability 2018-12-17 16:41:59 +01:00
ljedrz
1b549ebbdf profiler: simplify total_duration 2018-12-17 16:41:44 +01:00
David Wood
db635fc566
Kill borrows from a projection after assignment.
This commit extends previous work to kill borrows from a local after
assignment into that local to kill borrows from a projection after
assignment into a prefix of that place.
2018-12-17 14:49:52 +01:00
bors
54f3cd6873 Auto merge of #56810 - sinkuu:build_match, r=oli-obk
Improve MIR match generation for ranges

Improves MIR match generation to rule out ranges/values distinct from the range that has been tested. e.g., for this code:

```rust
match x {
    0..=5 if b => 0,
    6..=10 => 1,
    _ => 2,
}
```

MIR (before):

```rust
bb0: { ...; _4 = Le(const 0i32, _1); switchInt(move _4) -> [false: bb6, otherwise: bb5]; }
bb1: { _3 = const 0i32; goto -> bb8; }
bb2: { _6 = _2; switchInt(move _6) -> [false: bb6, otherwise: bb1]; } // If `!b`, jumps to test if `6 <= x <= 10`.
bb3: { _3 = const 1i32; goto -> bb8; }
bb4: { _3 = const 2i32; goto -> bb8; }
bb5: { _5 = Le(_1, const 5i32); switchInt(move _5) -> [false: bb6, otherwise: bb2]; }
bb6: { _7 = Le(const 6i32, _1); switchInt(move _7) -> [false: bb4, otherwise: bb7]; }
bb7: { _8 = Le(_1, const 10i32); switchInt(move _8) -> [false: bb4, otherwise: bb3]; }
```

MIR (after):
```rust
bb0: { ...; _4 = Le(const 0i32, _1); switchInt(move _4) -> [false: bb5, otherwise: bb6]; }
bb1: { _3 = const 0i32; goto -> bb8; }
bb2: { _6 = _2; switchInt(move _6) -> [false: bb4, otherwise: bb1]; } // If `!b`, jumps to `_ =>` arm.
bb3: { _3 = const 1i32; goto -> bb8; }
bb4: { _3 = const 2i32; goto -> bb8; }
bb5: { _7 = Le(const 6i32, _1); switchInt(move _7) -> [false: bb4, otherwise: bb7]; }
bb6: { _5 = Le(_1, const 5i32); switchInt(move _5) -> [false: bb5, otherwise: bb2]; }
bb7: { _8 = Le(_1, const 10i32); switchInt(move _8) -> [false: bb4, otherwise: bb3]; }
```

cc #29623
2018-12-17 13:26:40 +00:00
Shotaro Yamada
e38e954a0d Simplify MIR generation for logical ops 2018-12-17 22:16:13 +09:00
Wonwoo Choi
0b00dbedce Enable stack probes for UEFI images 2018-12-17 21:47:31 +09:00
Felix S. Klock II
933efd755b Address LLVM assertion failure by prepopulating with *just* name-anon-globals. 2018-12-17 13:45:27 +01:00
Vytautas Astrauskas
d966e57407 Fix Cargo.lock. 2018-12-17 13:40:40 +01:00
Vytautas Astrauskas
ecf8df5b7e Address the pull request review comments. 2018-12-17 12:18:35 +01:00
Vytautas Astrauskas
91bfbb9687 Use compiletest timestamp to check if the tests should be rerun. 2018-12-17 12:18:35 +01:00
bors
640c7ff432 Auto merge of #56853 - matthiaskrgr:clippy, r=oli-obk
submodules: update clippy from b7a431ea to a416c5e0

Changes:

````
rustup rust-lang/rust#52994
Fix test
Line length fix
Remove references to sized for end users
Remove DUMMY_SP
Add suggestion for replacement
Update lint definitions
Lint for Vec<Box<T: Sized>> - Closes #3530
Fix doc_markdown mixed case false positive
question_mark: Suggest Some(opt?) for if-else
redundant_field_names: Do not trigger on path with type params
question_mark: Lint only early returns
question_mark: Fix applicability
Remove obsolete comment
new_without_default, partialeq_ne_impl: Use span_lint_node
Update .stderr after rebase
cargo fmt and remove stabilized feature
Make suggestion Applicability::MachineApplicable
Address review feedback
Extract method
Check array lengths to prevent OOB access
Add suggestion for explicit_write lint
Fix write_with_newline escaping false positive
````

make toolstate green again
2018-12-17 11:11:55 +00:00
bors
a23d5ed751 Auto merge of #56833 - nagisa:ios-fix, r=alexcrichton
Provide -isysroot with sdkroot for ios builds

Necessary for the new XCode?

Absolutely positively definitely untested… although I did

```
cargo rustc -- -Clink-arg=-isysroot -Clink-arg=$sdk_root
```

and stuff did compile for once.
2018-12-17 08:54:15 +00:00
Shotaro Yamada
d66a55e4de tidy 2018-12-17 17:10:49 +09:00
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