Commit Graph

70532 Commits

Author SHA1 Message Date
Niko Matsakis
c1708abb07 type_check.rs: rustfmt 2017-12-04 09:14:39 -05:00
Niko Matsakis
506e80c899 remove unused span from eq_types (and rustfmt slightly) 2017-12-04 09:14:39 -05:00
Niko Matsakis
18cc0f9f37 document closure_base_def_id 2017-12-04 09:14:38 -05:00
Niko Matsakis
2e63bb3419 fix debruijn account in for_each_free_region 2017-12-04 09:14:38 -05:00
Niko Matsakis
243bf3f718 rename "free region" to "universally quantified region"
This has been bugging me. All the regions appear free in the source;
the real difference is that some of them are universally quantified
(those in the function signature) and some are existentially
quantified (those for which we are inferring values).
2017-12-04 09:14:38 -05:00
Niko Matsakis
fa813f74a2 introduce closure_env_ty helper to compute ty of closure env arg
Previously the code was somewhat duplicated.
2017-12-04 09:14:38 -05:00
Niko Matsakis
7f247add41 move liberate_late_bound_regions to a method on the tcx
No reason for it to live on `Inherited`.
2017-12-04 09:14:37 -05:00
Niko Matsakis
e9067bd5cc MIR dump: restructure pretty to be more extensible by other code 2017-12-04 09:14:37 -05:00
Niko Matsakis
49d2274cfe constraint_generation: create liveness constraints more thoroughly
We now visit just the stuff in the CFG, and we add liveness
constraints for all the random types, regions etc that appear within
rvalues and statements.
2017-12-04 09:14:35 -05:00
Niko Matsakis
4de7336862 extend TransitiveRelation with parents function 2017-12-04 08:51:14 -05:00
Niko Matsakis
663e7a4f08 promote region_infer into its own module 2017-12-04 08:51:13 -05:00
Niko Matsakis
fb4b06ab3b rename greater_than to reachable_from 2017-12-04 08:51:13 -05:00
Niko Matsakis
45f6027196 break type-checking of aggregate-kind out into helper function 2017-12-04 08:51:13 -05:00
Niko Matsakis
31d61f1f86 rename implied_bounds module to bounds 2017-12-04 08:51:13 -05:00
Niko Matsakis
c45307fae1 extract the code to create OutlivesBounds into its own module
Now it can be reused by the NLL code.
2017-12-04 08:51:13 -05:00
Niko Matsakis
1f33145ae9 make no_late_bound_regions a method on Binder<T> 2017-12-04 08:51:12 -05:00
Niko Matsakis
5562663a6c make resolve_regions_and_report_errors take an OutlivesEnv
This revealed some shortcomings, one of which is fixed. Fixes #45937.
2017-12-04 08:51:12 -05:00
Niko Matsakis
abd7d88139 move free_regions_map into infer::outlives 2017-12-04 08:51:12 -05:00
Niko Matsakis
aa51603870 extract the implied_bounds code into a helper function 2017-12-04 08:51:12 -05:00
Zack M. Davis
22b31758ec region_infer: BitMatrix representation of region values
This should be more efficient than allocating two BTreeSets for every
region variable?—as it is written in #45670.
2017-12-04 08:51:11 -05:00
Paul Daniel Faria
a9cb25b23a inform constraint generation using maybe-init
In particular, if we see a variable is DROP-LIVE, but it is not
MAYBE-INIT, then we can ignore the drop. This leavess attempt to use
more complex refinements of the idea (e.g., for subpaths or subfields)
to future work.
2017-12-04 08:51:11 -05:00
Niko Matsakis
08c8d7e919 borrow_check.rs: rustfmt 2017-12-04 08:51:10 -05:00
Niko Matsakis
a96b0cf86d replace constant regions with a post-inference check
Rather than declaring some region variables to be constant, and
reporting errors when they would have to change, we instead populate
each free region X with a minimal set of points (the CFG plus end(X)),
and then we let inference do its thing. This may add other `end(Y)`
points into X; we can then check after the fact that indeed `X: Y`
holds.

This requires a bit of "blame" detection to find where the bad
constraint came from: we are currently using a pretty dumb
algorithm. Good place for later expansion.
2017-12-04 08:25:21 -05:00
Niko Matsakis
932452ecc7 separate out the liveness constraints from the final value
It will be useful later for diagnostics to be able to remember where
things were live.
2017-12-04 08:25:20 -05:00
bors
c16f480fa6 Auto merge of #46485 - khuey:cursor-read_exact, r=Manishearth
Add a specialization of read_exact for Cursor.

The read_exact implementation for &[u8] is optimized and usually allows LLVM to reduce a read_exact call for small numbers of bytes to a bounds check and a register load instead of a generic memcpy.  On a workload I have that decompresses, deserializes (via bincode), and processes some data, this leads to a 40% speedup by essentially eliminating the deserialization overhead entirely.
2017-12-04 10:02:48 +00:00
Kyle Huey
02c1862fb5 Add a specialization of read_exact for Cursor.
The read_exact implementation for &[u8] is optimized and usually allows LLVM to reduce a read_exact call for small numbers of bytes to a bounds check and a register load instead of a generic memcpy.  On a workload I have that decompresses, deserializes (via bincode), and processes some data, this leads to a 40% speedup by essentially eliminating the deserialization overhead entirely.
2017-12-03 20:45:12 -08:00
bors
fdfbcf85d5 Auto merge of #46482 - frewsxcv:rollup, r=frewsxcv
Rollup of 8 pull requests

- Successful merges: #45957, #46260, #46432, #46442, #46454, #46462, #46465, #46473
- Failed merges:
2017-12-03 23:02:40 +00:00
Corey Farwell
48d38555e5 Rollup merge of #46473 - frewsxcv:frewsxcv-param-name, r=TimNN
Consistent parameter name for numeric ‘checked’ operations.

Some checked operations use `rhs` as a parameter name, and some use
`other`. For the sake of consistency, unify everything under the `rhs`
name.

Fixes https://github.com/rust-lang/rust/issues/46308.
2017-12-03 17:43:50 -05:00
Corey Farwell
909a8de953 Rollup merge of #46465 - nak3:fix-invalid-link, r=kennytm
Fix invalid link to lint_plugin_test.rs

The path to `lint_plugin_test.rs` was moved to `src/test/ui-fulldeps/`
from `src/test/run-pass-fulldeps/` in 38ef85696d

This patch updates it in the docs.
2017-12-03 17:43:49 -05:00
Corey Farwell
94dbbacd45 Rollup merge of #46462 - sinkuu:copyprop_reg2, r=arielb1
Fix CopyPropagation regression (2)

Remaining part of MIR copyprop regression by (I think) #45380, which I missed in #45753.

```rust
fn foo(mut x: i32) -> i32 {
    let y = x;
    x = 123; // `x` is assigned only once in MIR, but cannot be propagated to `y`
    y
}
```

So any assignment to an argument cannot be propagated.
2017-12-03 17:43:48 -05:00
Corey Farwell
7c4f74d16e Rollup merge of #46454 - GuillaumeGomez:search-overlap, r=QuietMisdreavus
Fix search results overlap

Fixes #46434.

r? @QuietMisdreavus
2017-12-03 17:43:47 -05:00
Corey Farwell
697c5ba0d9 Rollup merge of #46442 - est31:master, r=alexcrichton
Remove an unstable and dead compiler flag

The last use has been removed by commit fb9ca16b3b .
2017-12-03 17:43:46 -05:00
Corey Farwell
fcf1e73647 Rollup merge of #46432 - tromey:doc-fix-46307, r=estebank
Fix documentation for DecodeUtf16Error

Fixes #46307
2017-12-03 17:43:45 -05:00
Corey Farwell
b9ffbff959 Rollup merge of #46260 - ExpHP:builtin-macro-doc-sync, r=steveklabnik
Make doc stubs for builtin macros reflect existing support for trailing commas

This modifies the `macro_rules!` stubs in `std` for some of the compiler builtin macros in order to better reflect their currently supported grammar.  To my understanding these stubs have no impact on compiler output whatsoever, and only exist so that they may appear in the documentation.

P.S. It is in fact true that `env!` supports trailing commas while `option_env!` currently does not.  (I have another issue for this)

I don't imagine there's any way to automatically test these stubs, but I did *informally* test the new definitions on the playpen to see that they accept the desired invocations, as well as inspect the updated doc output.
2017-12-03 17:43:44 -05:00
Corey Farwell
82ee209492 Rollup merge of #45957 - dereckson:unix-agnosticity, r=shepmaster
Use more convenient and UNIX-agnostic shebang

When using bash-specific features, scripts using env to call bash
are more convenient, as bash be installed in different places
according the OS.
2017-12-03 17:43:43 -05:00
bors
1956d5535a Auto merge of #46435 - cuviper:min-llvm-3.9, r=rkruppe
Assume at least LLVM 3.9 in rustllvm and rustc_llvm

We bumped the minimum LLVM to 3.9 in #45326.  This just cleans up the conditional code in the `rustllvm` C++ wrappers to assume that minimum, and similarly cleans up the `rustc_llvm` build script.
2017-12-03 20:31:21 +00:00
bors
f2b11f30b2 Auto merge of #46393 - kennytm:45861-step-2-3-make-tools-job-not-fail-fast, r=alexcrichton
[auto-toolstate][2+3/8] Move external tools tests into its own job with --no-fail-fast

This PR performs these  things:

1. The `aux` job now performs "cargotest" and "pretty" tests. The clippy/rustfmt/rls/miri tests are moved into its own job.
2. These tests are run with `--no-fail-fast`, so that we can get the maximum number of failures of all tools from a single CI run.
3. The test results are stored into a JSON file, ready to be uploaded in the future.

This is step 2 and 3/8 of automatic management of broken tools #45861.
2017-12-03 18:01:29 +00:00
Corey Farwell
a2d87d83bf Consistent parameter name for numeric ‘checked’ operations.
Some checked operations use `rhs` as a parameter name, and some use
`other`. For the sake of consistency, unify everything under the `rhs`
name.

Fixes https://github.com/rust-lang/rust/issues/46308.
2017-12-03 11:24:00 -05:00
bors
0d11e51993 Auto merge of #46334 - mikhail-m1:slice_pattern_array_drop, r=arielb1
create a drop ladder for an array if any value is moved out

r? @arielb1
first commit for fix https://github.com/rust-lang/rust/issues/34708 (note: this still handles the subslice case in a very broken manner)
2017-12-03 15:31:32 +00:00
bors
9da2112238 Auto merge of #46320 - arielb1:always-resume, r=nikomatsakis
Always unwind through a Resume and other fixes

Should fix most of the small MIR borrowck issues.

r? @nikomatsakis
2017-12-03 13:01:47 +00:00
Ariel Ben-Yehuda
ff0b84df58 fix tests in wasm 2017-12-03 14:50:47 +02:00
kennytm
183964505b
Update the tools CI to use --no-fail-fast and --save-toolstates. 2017-12-03 18:36:56 +08:00
kennytm
971b1ba42b
Record build and test result of extended tools into toolstates.json. 2017-12-03 18:36:56 +08:00
kennytm
128199e39c
Move the swap the tools test and cargotest within check-aux.
The cargotest job is renamed to tools for clarification.
2017-12-03 18:36:56 +08:00
bors
d0ebb4dead Auto merge of #46433 - GuillaumeGomez:dedup-items, r=QuietMisdreavus
Fix deduplication of items

Fixes #45968.

r? @QuietMisdreavus
2017-12-03 10:33:15 +00:00
Kenjiro Nakayama
cac199fb27 Fix invalid link to lint_plugin_test.rs 2017-12-03 18:13:54 +09:00
Shotaro Yamada
17d6631c02 Fix MIR CopyPropagation regression 2017-12-03 17:42:52 +09:00
bors
0bae745cd8 Auto merge of #46290 - scottmcm:i128-from-compiler-builtins, r=nagisa
Update compiler-builtins and use it in the 128-bit lowering MIR test

This picks up the lang item implementations from https://github.com/rust-lang-nursery/compiler-builtins/pull/210

cc #45676 @est31 @nagisa
2017-12-03 07:42:31 +00:00
Scott McMurray
c0654ce815 Add ignore-emscripten too 2017-12-02 23:24:11 -08:00
bors
7e251390c7 Auto merge of #46428 - eddyb:scalar-pair-unpacking, r=arielb1
rustc: don't unpack newtypes of scalar-pairs with mismatched alignment.

This PR fixes a potential problem where a packed newtype of a pair was also considered a pair, even though it didn't have the required alignment of the pair.
cc @oli-obk It's possible miri hit something like this, with an unstable feature, but it's more general.
2017-12-03 05:14:24 +00:00