Commit Graph

68321 Commits

Author SHA1 Message Date
Tamir Duberstein
7d6c3dafbd
Trim and document compiler-builtins shim 2017-10-06 20:35:57 -04:00
bors
b67f4283b3 Auto merge of #45065 - arielb1:not-correct, r=nikomatsakis
fix logic error in #44269's `prune_cache_value_obligations`

We want to retain obligations that *contain* inference variables, not
obligations that *don't contain* them, in order to fix #43132. Because
of surrounding changes to inference, the ICE doesn't occur in its
original case, but I believe it could still be made to occur on master.

Maybe I should try to write a new test case? Certainly not right now
(I'm mainly trying to get us a beta that we can ship) but maybe before
we land this PR on nightly?

This seems to cause a 10% performance regression in my imprecise
attempt to benchmark item-body checking for #43613, but it's better to
be slow and right than fast and wrong. If we want to recover that, I
think we can change the constrained-type-parameter code to actually
give a list of projections that are important for resolving inference
variables and filter everything else out.
2017-10-06 15:30:32 +00:00
Ariel Ben-Yehuda
91fdadba61 fix logic error in #44269's prune_cache_value_obligations
We want to retain obligations that *contain* inference variables, not
obligations that *don't contain* them, in order to fix #43132. Because
of surrounding changes to inference, the ICE doesn't occur in its
original case, but I believe it could still be made to occur on master.

Maybe I should try to write a new test case? Certainly not right now
(I'm mainly trying to get us a beta that we can ship) but maybe before
we land this PR on nightly?

This seems to cause a 10% performance regression in my imprecise
attempt to benchmark item-body checking for #43613, but it's better to
be slow and right than fast and wrong. If we want to recover that, I
think we can change the constrained-type-parameter code to actually
give a list of projections that are important for resolving inference
variables and filter everything else out.
2017-10-06 17:12:24 +03:00
bors
a8feaee5b6 Auto merge of #44734 - mchlrhw:wip/hashmap-entry-and-then, r=BurntSushi
Implement `and_modify` on `Entry`

## Motivation

`Entry`s are useful for allowing access to existing values in a map while also allowing default values to be inserted for absent keys. The existing API is similar to that of `Option`, where `or` and `or_with` can be used if the option variant is `None`.

The `Entry` API is, however, missing an equivalent of `Option`'s `and_then` method. If it were present it would be possible to modify an existing entry before calling `or_insert` without resorting to matching on the entry variant.

Tracking issue: https://github.com/rust-lang/rust/issues/44733.
2017-10-06 12:51:11 +00:00
bors
3ed8b69842 Auto merge of #44965 - oconnor663:res_init_glibc, r=dtolnay
replace libc::res_init with res_init_if_glibc_before_2_26

The previous workaround for gibc's res_init bug is not thread-safe on
other implementations of libc, and it can cause crashes. Use a runtime
check to make sure we only call res_init when we need to, which is also
when it's safe. See https://github.com/rust-lang/rust/issues/43592.

~This PR is returning an InvalidData IO error if the glibc version string fails to parse. We could also have treated that case as "not glibc", and gotten rid of the idea that these functions could return an error. (Though I'm not a huge fan of ignoring error returns from `res_init` in any case.) Do other folks agree with these design choices?~

I'm pretty new to hacking on libstd. Is there an easy way to build a toy rust program against my changes to test this, other than doing an entire `sudo make install` on my system? What's the usual workflow?
2017-10-06 10:20:14 +00:00
mchlrhw
9e36111fc6 Implement entry_and_modify 2017-10-06 09:10:31 +01:00
bors
ed1cffdb21 Auto merge of #44818 - petrochenkov:astymac2, r=jseyfried
Improve resolution of associated types in declarative macros 2.0

Make various identifier comparisons for associated types (and sometimes other associated items) hygienic.
Now declarative macros 2.0 can use `Self::AssocTy`, `TyParam::AssocTy`, `Trait<AssocTy = u8>` where `AssocTy` is an associated type of a trait `Trait` visible from the macro. Also, `Trait` can now be implemented inside the macro and specialization should work properly (fixes https://github.com/rust-lang/rust/pull/40847#issuecomment-310867299).

r? @jseyfried or @eddyb
2017-10-06 05:37:43 +00:00
bors
b915820878 Auto merge of #44951 - vitiral:incr_struct_defs, r=michaelwoerister
incr compilation struct_defs.rs

I am prematurely openeing this as I need mentoring help from @michaelwoerister (also pinged @nikomatsakis)

First, is this the right approach for these changes?

Second, I'm a bit confused by the results so far.

- Changing `TupleStructFieldType(i32)` -> `...(u32)` changes only Hir and HirBody, not TypeOfItem
- Chaning `TupleStructAddField(i32)` -> `...(i32, u32)` *does* change TypeOfItem

This seems wrong. I feel like it should change TypeOfItem in both cases. Is this a bug in incr compilation or is it expected?
2017-10-06 03:16:13 +00:00
bors
f5e036a290 Auto merge of #45054 - andjo403:master, r=alexcrichton
Faster compile times for release builds with llvm fix

Run global optimizations after the inliner to avoid spending time on optimizing dead code.

fixes #44655
2017-10-05 22:20:23 +00:00
Jack O'Connor
9602fe1509 replace libc::res_init with res_init_if_glibc_before_2_26
The previous workaround for gibc's res_init bug is not thread-safe on
other implementations of libc, and it can cause crashes. Use a runtime
check to make sure we only call res_init when we need to, which is also
when it's safe. See https://github.com/rust-lang/rust/issues/43592.
2017-10-05 17:53:10 -04:00
Vadim Petrochenkov
2d9161d188 Improve resolution of associated types in macros 2.0 2017-10-06 00:35:21 +03:00
bors
417c73891f Auto merge of #44943 - nivkner:fixme_fixup, r=dtolnay
address some FIXME whose associated issues were marked as closed

part of #44366
2017-10-05 19:52:00 +00:00
Andreas Jonson
8fd3c8f769 Faster compile times for release builds with llvm fix 2017-10-05 18:56:23 +00:00
bors
4531131bf3 Auto merge of #44878 - Nashenas88:master, r=nikomatsakis
Store a new Region value every time we create a new region variable

Paired with @spastorino to walk through this and implement #44870.
2017-10-05 17:14:12 +00:00
bors
1db1144277 Auto merge of #45046 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

- Successful merges: #44664, #44935, #44972, #44980, #44987, #44997, #45006, #45017, #45024
- Failed merges:
2017-10-05 13:25:55 +00:00
kennytm
5440733971 Rollup merge of #45024 - QuietMisdreavus:doc-masked-issue-num, r=pnkfelix
add the issue number to doc_masked's feature gate

Whoops, missed this in the original `#[doc(masked)]` PR.
2017-10-05 20:22:37 +08:00
kennytm
8249004f03 Rollup merge of #45017 - GuillaumeGomez:mutex-links, r=estebank
Add missing urls for Mutex

r? @rust-lang/docs
2017-10-05 20:22:36 +08:00
kennytm
71fba531dc Rollup merge of #45006 - MaikKlein:patch-2, r=nikomatsakis
Typo in `librustc/README.md`
2017-10-05 20:22:36 +08:00
kennytm
856a12d03e Rollup merge of #44997 - SuriyaaKudoIsc:patch-1, r=steveklabnik
Use HTTPS protocol for "chat.mibbit.com"

I changed the `http://` protocol to `https://` for the `chat.mibbit.com` website. 📝

--[**Suriyaa**](https://mozillians.org/de/u/suriyaakudo/) 🦊

(*PS: Is somebody interested to vouch me at https://mozillians.org/de/u/suriyaakudo/?*)
2017-10-05 20:22:35 +08:00
kennytm
9a43c28e6b Rollup merge of #44987 - pnkfelix:mir-borrowck-fix-borrowindexes-ice, r=arielb1
`EndRegion` do not always correspond to borrow-data entries

Remove assertion that the argument to every `EndRegion` correspond to some dataflow-tracked borrow-data entry.

Fix #44828

(The comment thread on the aforementioned issue discusses why its best to just remove this assertion.)
2017-10-05 20:22:34 +08:00
kennytm
14d8055476 Rollup merge of #44980 - steveklabnik:update-books, r=estebank
update books for next release

Also fixes some stdlib links to the reference which have changed.

First step in https://forge.rust-lang.org/release-process.html, doing it a few days early 😄
2017-10-05 20:22:33 +08:00
kennytm
b380254858 Rollup merge of #44972 - durka:patch-44, r=arielb1
fix ItemKind::DefaultImpl doc comment

Upgrade comment to doc comment.

...Is this actually used? If so, why does the `Impl` variant right below have a `Defaultness`?
2017-10-05 20:22:31 +08:00
kennytm
3a037f113c Rollup merge of #44935 - vitiral:dependencies, r=steveklabnik
Add links to headers in README and CONTRIBUTING

this also adds dependencies to CONTRIBUTING

I'm just getting started building the rust compiler and noticed this information/ability was missing.

It was also missing the gdb dependency for running tests. I pulled the information out of `appveyor.yml` and recommended later than 7.1 because that is what [apt ships](https://packages.ubuntu.com/search?suite=trusty&keywords=gdb). Feel free to tell me something different!
2017-10-05 20:22:30 +08:00
kennytm
b34ade07a1 Rollup merge of #44664 - budziq:contributing_external, r=steveklabnik
Corrected the CONTRIBUTING.md "External Dependencies" section

The "External Dependencies" section is a little outdated.
Please see following comments https://github.com/rust-lang/rust/pull/44567#issuecomment-329797331 https://github.com/rust-lang/rust/pull/44567#issuecomment-329799655 for rationale.
2017-10-05 20:22:29 +08:00
bors
abef7e1fd2 Auto merge of #45019 - aidanhs:aphs-no-trans-worker-panic, r=alexcrichton
Don't unwrap work item results as the panic trace is useless

Fixes #43402 now there's no multithreaded panic printouts

Also update a comment

--------

Likely regressed in #43506, where the code was changed to panic in worker threads on error.

Unwrapping gives zero extra information since the stack trace is so short, so we may as well just surface that there was an error and exit the thread properly. Because there are then no multithreaded printouts, I think it should mean the output of the test for #26199 is deterministic and not interleaved (thanks to @philipc https://github.com/rust-lang/rust/issues/43402#issuecomment-333835271 for a hint).

Sadly the output is now:
```
thread '<unnamed>' panicked at 'aborting due to worker thread panic', src/librustc_trans/back/write.rs:1643:20
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: could not write output to : No such file or directory

error: aborting due to previous error
```
but it's an improvement over the multi-panic situation before.

r? @alexcrichton
2017-10-05 10:50:11 +00:00
bors
a0db04b62b Auto merge of #44940 - philipc:remap-path, r=michaelwoerister
Don't use remapped path when loading modules and include files

Fixes bug reported in https://github.com/rust-lang/rust/issues/41555#issuecomment-327866056.

cc @michaelwoerister
2017-10-05 05:16:41 +00:00
bors
bd36dcf7aa Auto merge of #44481 - Aaronepower:master, r=alexcrichton
Updated RELEASES.md for 1.21.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)
2017-10-05 02:53:43 +00:00
Santiago Pastorino
271a492cb2 Generate ScopeId using newtype_index macro 2017-10-04 23:51:43 -03:00
Santiago Pastorino
8ee16f4352 Generate SerializedDepNodeIndex using newtype_index macro 2017-10-04 23:51:43 -03:00
Santiago Pastorino
b5a5556dd4 Generate DepNodeIndexNew using newtype_index macro 2017-10-04 23:51:43 -03:00
Santiago Pastorino
3502bec032 Make newtype_index get debug_name using reflection 2017-10-04 23:50:53 -03:00
Santiago Pastorino
9af7426b47 Make newtype_index macro use full path to resolve constants 2017-10-04 23:50:53 -03:00
Santiago Pastorino
c8549a1586 Generate Idx in nll using newtype_index! 2017-10-04 23:50:53 -03:00
Santiago Pastorino
3d230af80b Move newtype_index to rustc_data_structures 2017-10-04 23:50:53 -03:00
Santiago Pastorino
f5cef21569 Convert regions to IndexVec 2017-10-04 23:50:53 -03:00
Paul Faria
0c5de8633c Store a new Region value every time we create a new region variable 2017-10-04 23:50:53 -03:00
bors
d7e73e4b1a Auto merge of #44901 - michaelwoerister:on-demand-eval, r=nikomatsakis
incr.comp.: Switch to red/green change tracking, remove legacy system.

This PR finally switches incremental compilation to [red/green tracking](https://github.com/rust-lang/rust/issues/42293) and completely removes the legacy dependency graph implementation -- which includes a few quite costly passes that are simply not needed with the new system anymore.

There's still some documentation to be done and there's certainly still lots of optimizing and tuning ahead -- but the foundation for red/green is in place with this PR. This has been in the making for a long time `:)`

r? @nikomatsakis
cc @alexcrichton, @rust-lang/compiler
2017-10-04 19:14:41 +00:00
Niv Kaminer
559adb7e06 avoid using match keyword as module name 2017-10-04 16:17:25 +00:00
QuietMisdreavus
2af12b7e45 add the issue number to doc_masked's feature gate 2017-10-04 10:47:45 -05:00
bors
417ffc98df Auto merge of #44890 - nvzqz:str-box-transmute, r=alexcrichton
Remove mem::transmute used in Box<str> conversions

Given that https://github.com/rust-lang/rust/pull/44877 is failing, I decided to make a separate PR. This is done with the same motivation: to avoid `mem::transmute`-ing non `#[repr(C)]` types.
2017-10-04 15:14:15 +00:00
Niv Kaminer
51542a9192 seperate and move miscellaneous benchmarks to librustc 2017-10-04 12:21:15 +00:00
Guillaume Gomez
e1df72fdab Add missing urls for Mutex 2017-10-04 14:03:23 +02:00
Aidan Hobson Sayers
4a6ede78ee Don't unwrap work item results as the panic trace is useless
Fixes #43402 now there's no multithreaded panic printouts

Also update a comment
2017-10-04 12:46:43 +01:00
bors
fd8099f0ec Auto merge of #44882 - mikhail-m1:master, r=pnkfelix
add notes to report_conflicting_borrow MIR borrowck

part of #44596
2017-10-04 11:26:12 +00:00
Michael Woerister
0454a41bec incr.comp.: Address review comments. 2017-10-04 12:35:56 +02:00
Mikhail Modin
c68b10f5ee add notes to report_conflicting_borrow MIR borrowck 2017-10-04 10:35:42 +03:00
bors
eabef0608b Auto merge of #44905 - Pirh:process_abort_docs, r=steveklabnik
Update docs for process::abort

Remove a typo and explain the relationship to `panic!`.

Part of #29370

r? @steveklabnik
2017-10-04 05:43:00 +00:00
bors
f1938cf13b Auto merge of #44999 - pnkfelix:mir-borrowck-fix-assert-left-right, r=nikomatsakis
Overlapping borrows can point to different lvalues.

Overlapping borrows can point to different lvalues.

There's always a basis for the overlap, so instead of removing the assert entirely, I instead pass in the prefix that we found and check that it actually is a prefix of both lvalues.

Fix #44829
2017-10-04 03:28:24 +00:00
bors
2db48d7fcb Auto merge of #44979 - hinaria:master, r=dtolnay
make `backtrace = false` compile for windows targets.

when building for windows with `backtrace = false`, `libstd` fails to compile because some modules that use items from `sys_common::backtrace::*` are still included, even though those modules aren't used or referenced by anything.

`sys_common::backtrace` doesn't exist when the backtrace feature is turned off.

--

i've also added `#[cfg(feature = "backtrace")]` to various items that exist exclusively to support `mod backtrace` since the compilation would fail since they would be unused in a configuration with backtraces turned off.
2017-10-04 00:57:30 +00:00
bors
bd90aa6daa Auto merge of #44895 - stephaneyfx:master, r=dtolnay
Made `fs::copy` return the length of the main stream

On Windows with the NTFS filesystem, `fs::copy` would return the sum of the
lengths of all streams, which can be different from the length reported by
`metadata` and thus confusing for users unaware of this NTFS peculiarity.

This makes `fs::copy` return the same length `metadata` reports which is the
value it used to return before PR #26751. Note that alternate streams are still
copied; their length is just not included in the returned value.

This change relies on the assumption that the stream with index 1 is always the
main stream in the `CopyFileEx` callback. I could not find any official
document confirming this but empirical testing has shown this to be true,
regardless of whether the alternate stream is created before or after the main
stream.

Resolves #44532
2017-10-03 22:19:40 +00:00