2838 Commits

Author SHA1 Message Date
Niko Matsakis
4e3740ace0 liveness.rs: rustfmt 2018-08-27 13:57:55 -04:00
Niko Matsakis
12f50a6e75 implement liveness tracing, remove old liveness system 2018-08-27 13:57:55 -04:00
Niko Matsakis
f1a675a467 update comment in the interest of precision 2018-08-27 13:48:40 -04:00
Niko Matsakis
a13e4aea81 remove the liveness mode and simplify categorize
Less modes!
2018-08-27 13:48:40 -04:00
bors
8785e348ba Auto merge of #53580 - nikomatsakis:nll-issue-53568, r=pnkfelix
fix NLL ICEs

Custom type-ops reuse some of the query machinery -- but while query results are canonicalized after they are constructed, custom type ops are not, and hence we have to resolve the type variables to avoid an ICE here.

Also, use the type-op machinery for implied outlives bounds.

Fixes #53568
Fixes #52992
Fixes #53680
2018-08-27 14:44:13 +00:00
bors
b638d8c75f Auto merge of #53656 - nnethercote:HybridIdxSet-tweaks, r=nikomatsakis
`HybridIdxSet` tweaks

A couple of tweaks to `HybridIdxSet`.

r? @nikomatsakis
2018-08-27 11:47:03 +00:00
Alex Crichton
0a2282e128 rustc: Continue to tweak "std internal symbols"
In investigating [an issue][1] with `panic_implementation` defined in an
executable that's optimized I once again got to rethinking a bit about the
`rustc_std_internal_symbol` attribute as well as weak lang items. We've sort of
been non-stop tweaking these items ever since their inception, and this
continues to the trend.

The crux of the bug was that in the reachability we have a [different branch][2]
for non-library builds which meant that weak lang items (and std internal
symbols) weren't considered reachable, causing them to get eliminiated by
ThinLTO passes. The fix was to basically tweak that branch to consider these
symbols to ensure that they're propagated all the way to the linker.

Along the way I've attempted to erode the distinction between std internal
symbols and weak lang items by having weak lang items automatically configure
fields of `CodegenFnAttrs`. That way most code no longer even considers weak
lang items and they're simply considered normal functions with attributes about
the ABI.

In the end this fixes the final comment of #51342

[1]: https://github.com/rust-lang/rust/issues/51342#issuecomment-414368019
[2]: 35bf1ae257/src/librustc/middle/reachable.rs (L225-L238)
2018-08-26 16:34:14 -07:00
bors
e41f41142b Auto merge of #53609 - bemeurer:tidy-ctfe, r=RalfJung
Tidy CFTE/MIRI

Fixes #53596
2018-08-25 06:48:14 +00:00
bors
d95f078f0a Auto merge of #53225 - nikomatsakis:nll-type-annot, r=pnkfelix
MIR: support user-given type annotations on fns, structs, and enums

This branch adds tooling to track user-given type annotations on functions, structs, and enum variant expressions. The user-given types are passed onto NLL which then enforces them.

cc #47184 — not a complete fix, as there are more cases to cover

r? @eddyb
cc @rust-lang/wg-compiler-nll
2018-08-24 22:42:00 +00:00
Niko Matsakis
ed73a3267a address pnkfelix nits 2018-08-24 13:27:38 -04:00
Niko Matsakis
7c3654a722 pacify the mercilous tidy: adt user-ty 2018-08-24 13:27:38 -04:00
Niko Matsakis
fa787454c5 pacify the mercilous tidy: user-ty on rvalue assignments 2018-08-24 13:27:38 -04:00
Niko Matsakis
016ccf8e6e include ADT user-ty in output 2018-08-24 13:27:38 -04:00
Niko Matsakis
56506cfa25 support user-given types in adts 2018-08-24 13:27:38 -04:00
Niko Matsakis
2d1d3fef62 support user annotations in fns, methods 2018-08-24 13:27:38 -04:00
Niko Matsakis
5f1643d2ea equate the user_ty of a constant with its declared ty 2018-08-24 13:27:38 -04:00
Niko Matsakis
e23ad83fbc add a user_ty annotation to Constant 2018-08-24 13:27:38 -04:00
kennytm
62f29c4fb8
Rollup merge of #53664 - IsaacWoods:fix_53608, r=oli-obk
Remove unnecessary closure in rustc_mir/build/mod.rs

Fixes #53608
2018-08-24 19:29:59 +08:00
Isaac Woods
b24a30e94d
Remove unnecessary closure in rustc_mir/build/mod.rs 2018-08-24 11:21:15 +01:00
Nicholas Nethercote
626b2987a9 Introduce UnionIntoIdxSet and SubtractFromIdxSet traits.
They let `union()`, `union_sparse()` and `union_hybrid()` be merged.
Likewise for subtract()`, `subtract_sparse()` and `subtract_hybrid()`.
2018-08-24 19:51:09 +10:00
kennytm
d13c61208a
Rollup merge of #53563 - matthiaskrgr:String, r=varkor
use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into()
2018-08-24 16:44:35 +08:00
Bernardo Meurer
e07c1542ac
Fixed multi-line function signatures 2018-08-23 09:34:21 -07:00
Bernardo Meurer
6ca0384755
Small style fixes 2018-08-23 09:26:37 -07:00
Bernardo Meurer
67a8666ac8
More tidy fixes to CTFE 2018-08-23 09:21:40 -07:00
Bernardo Meurer
46b885f62b
Fix stylistic mistakes 2018-08-23 08:57:42 -07:00
Bernardo Meurer
22d3f66945
Fixup long code lines 2018-08-23 08:55:42 -07:00
Bernardo Meurer
35f25bfef3
Reflow and fixup comments 2018-08-23 08:54:23 -07:00
Bernardo Meurer
22beeb4cab
Add license header to CTFE/MIRI 2018-08-23 08:51:44 -07:00
bors
e5284b0b57 Auto merge of #53384 - gootorov:use-servo-smallvec, r=michaelwoerister
Use optimized SmallVec implementation

This PR replaces current SmallVec implementation with the one from the Servo project.

Closes https://github.com/rust-lang/rust/issues/51640

r? @Mark-Simulacrum
2018-08-23 14:40:22 +00:00
bors
35bf1ae257 Auto merge of #52602 - scottmcm:tryblock-expr, r=nikomatsakis
Implement try block expressions

I noticed that `try` wasn't a keyword yet in Rust 2018, so...

~~Fix​es https://github.com/rust-lang/rust/issues/52604~~ That was fixed by PR https://github.com/rust-lang/rust/pull/53135
cc https://github.com/rust-lang/rust/issues/31436 https://github.com/rust-lang/rust/issues/50412
2018-08-23 11:46:24 +00:00
Niko Matsakis
a59584a6ff use TypeOp machinery for outlives_bounds
Fixes #52992
2018-08-23 07:38:47 -04:00
Matthias Krüger
ede1f7d2a5 use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into() 2018-08-23 10:14:52 +02:00
Igor Gutorov
4d81fe9243 Use optimized SmallVec implementation 2018-08-23 10:45:53 +03:00
bors
e73077e106 Auto merge of #53520 - nnethercote:merge-IdxSet-IdxSetBuf, r=nikomatsakis
Merge `IdxSet` and `IdxSetBuf`

Because it simplifies things.

@r? nikomatsakis
2018-08-23 02:54:24 +00:00
bors
917945d662 Auto merge of #52011 - oli-obk:dont_you_hate_it_too_when_everything_panics_constantly, r=eddyb
Allow panicking with string literal messages inside constants

r? @eddyb

cc https://github.com/rust-lang/rust/issues/51999

we can't implement things like `panic!("foo: {}", x)` right now because we can't call trait methods (most notably `Display::fmt`) inside constants. Also most of these impls probably have loops and conditions, so it's messy anyway.

But hey `panic!("foo")` works at least.

cc @japaric got any test ideas for `#![no_std]`?
2018-08-22 22:08:03 +00:00
bors
f1b506af02 Auto merge of #53607 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 10 pull requests

Successful merges:

 - #53418 (Mark some suggestions as MachineApplicable)
 - #53431 (Moved some feature gate ui tests to correct location)
 - #53442 (Update version of rls-data used with save-analysis)
 - #53504 (Set applicability for more suggestions.)
 - #53541 (Fix missing impl trait display as ret type)
 - #53544 (Point at the trait argument when using unboxed closure)
 - #53558 (Normalize source line and column numbers.)
 - #53562 (Lament the invincibility of the Turbofish)
 - #53574 (Suggest direct raw-pointer dereference)
 - #53585 (Remove super old comment on function that parses items)

Failed merges:

 - #53472 (Use FxHash{Map,Set} instead of the default Hash{Map,Set} everywhere in rustc.)
 - #53563 (use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into())

r? @ghost
2018-08-22 19:59:52 +00:00
bors
b75b0471a8 Auto merge of #53581 - varkor:tyvariants-rename, r=eddyb
Rename TyVariants and variants

- Rename `TypeVariants` to `TyKind`.
- Remove the `Ty` prefix from each one of its variants (plus the identically-named variants of `PrimTy`).
- Rename `ty::Slice` to `ty::List`.

The new names look cleaner.

r? @eddyb
2018-08-22 17:43:44 +00:00
Oliver Schneider
bb78426ca8 Allow panicking with string literal messages inside constants 2018-08-22 18:28:57 +02:00
Guillaume Gomez
8255f9e7a9
Rollup merge of #53418 - ekse:suggestions-applicability, r=estebank
Mark some suggestions as MachineApplicable

I think the following suggestions should be safe to mark as `MachineApplicable`.

r? @estebank
2018-08-22 17:45:29 +02:00
bors
c24f27c045 Auto merge of #53536 - RalfJung:array-drop, r=eddyb
fix array drop glue: properly turn raw ptr into reference

Discovered while working on https://github.com/rust-lang/rust/pull/53424: The generated drop glue uses an assignment `ptr = cur` where `ptr` is a reference and `cur` a raw pointer. This is not well-formed MIR.

Do we have MIR sanity checks that run on the drop glue and should have caught this?

r? @eddyb
2018-08-22 15:29:07 +00:00
varkor
71722b9cef Fix rebase issues 2018-08-22 16:15:56 +01:00
varkor
08f3685a82 Remove unnecessary TyKind::s 2018-08-22 16:08:49 +01:00
varkor
8a5dccde2a Remove Ty prefix from Ty{Bool|Char|Int|Uint|Float|Str} 2018-08-22 16:08:49 +01:00
varkor
04fa5d3adb Remove Ty prefix from Ty{Foreign|Param} 2018-08-22 16:07:55 +01:00
varkor
6f637da50c Remove Ty prefix from Ty{Adt|Array|Slice|RawPtr|Ref|FnDef|FnPtr|Dynamic|Closure|Generator|GeneratorWitness|Never|Tuple|Projection|Anon|Infer|Error} 2018-08-22 16:07:44 +01:00
varkor
d37cee3b0e Rename ty::TyVariants to ty::TyKind 2018-08-22 16:05:50 +01:00
varkor
87c7e57020 Rename ty::Slice to ty::List 2018-08-22 16:05:27 +01:00
Ralf Jung
4fec615ebf fix error reporting in validation 2018-08-22 13:08:40 +02:00
Ralf Jung
899bc14cc0 fix validating fat pointers to user-defined unsized types 2018-08-22 13:08:40 +02:00
Ralf Jung
14dc780d89 fix a comment in validity 2018-08-22 13:08:40 +02:00