about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2017-10-12Auto merge of #45007 - undecidabot:optimize-iter, r=blussbors-72/+114
Optimize comparison functions of Iterator Replaced matching on tuples which led to less performant code generation. Testing on microbenchmarks consistently showed ~1.35x improvement in performance on my machine. Fixes #44729.
2017-10-12Auto merge of #45176 - michaelwoerister:fix-region-and-trans-item-order, ↵bors-3/+23
r=nikomatsakis incr.comp.: Fix HashStable for ty::RegionKind and trans item order Fixes #45161 and the failing rust-icci tests. r? @nikomatsakis
2017-10-12Auto merge of #44967 - wesleywiser:trans_fulfill_obligation, r=nikomatsakisbors-82/+226
Turn `trans_fulfill_obligation` into a query Part of #44891
2017-10-12Auto merge of #44985 - zilbuz:issue-44974, r=pnkfelixbors-35/+439
MIR borrowck: print lvalues in error messages in the same way that the AST borrowck Fix #44974 - Print fields with `.name` rather than `.<num>` - Autoderef values if followed by a field or an index - Output `[..]` when borrowing inside a slice
2017-10-12Auto merge of #44969 - QuietMisdreavus:impls-for-everyone, r=steveklabnikbors-8/+34
document trait impls when the type appears in the trait's generics Fixes #25264 ![image](https://user-images.githubusercontent.com/5217170/31062309-4fc7c594-a6ef-11e7-892e-07f95bbc7976.png)
2017-10-11Auto merge of #44963 - JLockerman:fix_spsc, r=alexcrichtonbors-107/+192
Improve performance of spsc_queue and stream. This PR makes two main changes: 1. It switches the `spsc_queue` node caching strategy from keeping a shared counter of the number of nodes in the cache to keeping a consumer only counter of the number of node eligible to be cached. 2. It separates the consumer and producers fields of `spsc_queue` and `stream` into a producer cache line and consumer cache line. Overall, it speeds up `mpsc` in `spsc` mode by 2-10x. Variance is higher than I'd like (that 2-10x speedup is on one benchmark), I believe this is due to the drop check in `send` (`fn stream::Queue::send:107`). I think this check can be combined with the sleep detection code into a version which only uses 1 shared variable, and only one atomic access per `send`, but I haven't looked through the select implementation enough to be sure. The code currently assumes a cache line size of 64 bytes. I added a CacheAligned newtype in `mpsc` which I expect to reuse for `shared`. It doesn't really belong there, it would probably be best put in `core::sync::atomic`, but putting it in `core` would involve making it public, which I thought would require an RFC. Benchmark runner is [here](https://github.com/JLockerman/queues/tree/3eca46279c53eb75833c5ecd416de2ac220bd022/shootout), benchmarks [here](https://github.com/JLockerman/queues/blob/3eca46279c53eb75833c5ecd416de2ac220bd022/queue_bench/src/lib.rs#L170-L293). Fixes #44512.
2017-10-11Auto merge of #44888 - tirr-c:binder-hr-region, r=arielb1bors-807/+1180
Refactor fmt::Display and fmt::Debug impls in ppaux Also fixes #44887. There was a problem that unnamed late-bound regions are *always* named `'r` while they are displayed using `std::fmt::Display`. --- ```rust fn main() { f(|_: (), _: ()| {}); } fn f<F>(_: F) where F: Fn(&(), for<'r> fn(&'r ())) {} ``` Before (incorrectly shadows lifetime, `for<'r>` omitted for the second argument): ``` error[E0631]: type mismatch in closure arguments --> test.rs:2:5 | 2 | f(|_: (), _: ()| {}); | ^ ----------------- found signature of `fn((), ()) -> _` | | | expected signature of `for<'r> fn(&'r (), fn(&'r ())) -> _` | = note: required by `f` ``` After: ``` error[E0631]: type mismatch in closure arguments --> test.rs:2:5 | 2 | f(|_: (), _: ()| {}); | ^ ----------------- found signature of `fn((), ()) -> _` | | | expected signature of `for<'s> fn(&'s (), for<'r> fn(&'r ())) -> _` | = note: required by `f` ``` r? @nikomatsakis
2017-10-11Auto merge of #45192 - steveklabnik:rollup, r=steveklabnikbors-14/+223
Rollup of 5 pull requests - Successful merges: #45071, #45139, #45148, #45171, #45180 - Failed merges: #45121
2017-10-10ci: Fix installing the Android SDKAlex Crichton-1/+1
Apparently the https urls are broken due to some certificate validation whatnots, and so far the least intrusive solution I've found is to just disable that.
2017-10-10Rollup merge of #45180 - 0xAX:fix-help-message-in-configure.py, ↵Steve Klabnik-6/+1
r=Mark-Simulacrum Fix path to x.py in bootstrap/configure.py script We may see a help message in the end of the output of the ./configure script: ``` $ ./configure configure: processing command line configure: configure: build.configure-args := [] configure: configure: writing `config.toml` in current directory configure: configure: run `python ./src/bootstrap/x.py --help` configure: ``` but the `x.py` script is actually in the rust root directory and executing of such help string will give us error: ``` $ python ./src/bootstrap/x.py --help python: can't open file './src/bootstrap/x.py': [Errno 2] No such file or directory ``` This patch fixes path to the x.py script in the output of the ./configure
2017-10-10Rollup merge of #45148 - gaurikholkar:master, r=nikomatsakisSteve Klabnik-0/+160
Update let-expressions.rs with DepNode labels As a part of #44924, the PR has tests verified for the following dependency nodes for **let-expressions** ``` - MirValidated - MirOptimized - TypeCheckTables - TypeOfItem - GenericsOfItem - PredicatesOfItem - FnSignature ``` As we are more concerned with the function body, the following fingerprints do not change over compilation sessions. ```- TypeOfItem - GenericsOfItem - PredicatesOfItem - FnSignature ``` r? @nikomatsakis cc @michaelwoerister P.S. Will add more tests as and when possible :)
2017-10-10Rollup merge of #45139 - michaelwoerister:document-force_from_dep_node, ↵Steve Klabnik-4/+47
r=nikomatsakis incr.comp.: Add some documentation to force_from_dep_node(). r? @nikomatsakis
2017-10-10Rollup merge of #45071 - tromey:use-gdb-lazy-string, r=michaelwoeristerSteve Klabnik-4/+15
Implement display_hint in gdb pretty printers A few pretty-printers were returning a quoted string from their to_string method. It's preferable in gdb to return a lazy string and to let gdb handle the display by having a "display_hint" method that returns "string" -- it lets gdb settings (like "set print ...") work, it handles corrupted strings a bit better, and it passes the information along to IDEs.
2017-10-11Fix path to x.py in configure.py scriptAlexander Kuleshov-6/+1
We may see a help message in the end of the output of the ./configure script: $ ./configure configure: processing command line configure: configure: build.configure-args := [] configure: configure: writing `config.toml` in current directory configure: configure: run `python ./src/bootstrap/x.py --help` configure: but the x.py script is actually in the rust root directory and executing of such help string will give us error: $ python ./src/bootstrap/x.py --help python: can't open file './src/bootstrap/x.py': [Errno 2] No such file or directory This patch fixes path to the x.py script in the output of the ./configure
2017-10-10Auto merge of #45169 - kennytm:rollup, r=kennytmbors-77/+142
Rollup of 9 pull requests - Successful merges: #44775, #45089, #45095, #45099, #45101, #45108, #45116, #45135, #45146 - Failed merges:
2017-10-10incr.comp.: Fix instability in CodegenUnitExt::items_in_deterministic_order().Michael Woerister-3/+20
2017-10-10incr.comp.: Add missing match branch in HashStable impl for ty::RegionKind.Michael Woerister-0/+3
2017-10-10Rollup merge of #45146 - petrochenkov:lessrec, r=estebankkennytm-5/+74
Fix a bug in diagnostics for `x as usize < y` Also improve diagnostics for `x as usize << y`. Fixes https://github.com/rust-lang/rust/issues/44406 r? @estebank
2017-10-10Rollup merge of #45135 - michaelwoerister:move-incr-comp-with-macro-export, ↵kennytm-2/+1
r=alexcrichton incr.comp.: Move macro-export test case to src/test/incremental. `compile-fail/incr_comp_with_macro_export.rs` was trying to role its own incremental compilation setup. This started to cause problems. There's no reason to not just make this a regular `src/test/incremental` test. Fixes #45062.
2017-10-10Rollup merge of #45116 - johnthagen:typo-fix, r=alexcrichtonkennytm-2/+2
Fix typos
2017-10-10Rollup merge of #45108 - phil-opp:patch-2, r=japarickennytm-2/+2
Fix data-layout field in x86_64-unknown-linux-gnu.json test file The current data-layout causes the following error: > rustc: /checkout/src/llvm/lib/CodeGen/MachineFunction.cpp:151: void llvm::MachineFunction::init(): Assertion `Target.isCompatibleDataLayout(getDataLayout()) && "Can't create a MachineFunction using a Module with a " "Target-incompatible DataLayout attached\n"' failed. The new value was generated according to [this comment by @japaric](https://github.com/rust-lang/rust/issues/31367#issuecomment-213595571).
2017-10-10Rollup merge of #45101 - lfairy:proc-macro-string-escape, r=jseyfriedkennytm-1/+1
Make the result of `Literal::string()` more readable Closes #45076
2017-10-10Rollup merge of #45099 - mikeyhew:fix-astconv-self-type-comments, r=nikomatsakiskennytm-2/+2
Update comments referring to old check_method_self_type I was browsing the code base, trying to figure out how #44874 could be implemented, and noticed some comments that were out of date and a bit misleading (`check_method_self_type` has since been renamed to `check_method_receiver`). Thought it would be an easy first contribution to Rust!
2017-10-10Rollup merge of #45095 - bluss:discriminant-send-sync, r=alexcrichtonkennytm-1/+17
Ensure std::mem::Discriminant is Send + Sync `PhantomData<*const T>` has the implication of Send / Syncness following the *const T type, but the discriminant should always be Send and Sync. Use `PhantomData<fn() -> T>` which has the same variance in T, but is Send + Sync
2017-10-10Rollup merge of #45089 - rkruppe:master, r=blusskennytm-1/+1
Fix typo in codegen test Without the `:`, the `CHECK-NOT` is ignored by FileCheck, making the line not test anything.
2017-10-10Rollup merge of #44775 - MaloJaffre:debug-struct, r=sfacklerkennytm-61/+42
Refactor to use `debug_struct` in several Debug impls Also use `pad` and derive `Debug` for `Edge`. Fixes #44771.
2017-10-10Auto merge of #45170 - rust-lang:aphs-no-unsynchronised-llvm-err-global, ↵bors-1/+1
r=alexcrichton Band-aid fix to stop race conditions in llvm errors This is a big hammer, but should be effective at completely removing a few issues, including inconsistent error messages and segfaults when LLVM workers race to report results `LLVM_THREAD_LOCAL` has been present in LLVM since 8 months before 3.7 (the earliest supported LLVM version that Rust can use) Maybe fixes #43402 (third time lucky?) r? @alexcrichton ------ You can see that in https://github.com/rust-lang/rust/blob/5f578dfad0dd5d43b28eff71a7e857d10c3f55fe/src/librustc_trans/back/write.rs#L75-L100 there's a small window where the static global error message (made thread local in this PR) could be altered by another thread. Note that we can't use `thread_local` because gcc 4.7 (permitted according to the readme) does not support it. Maybe ideally all the functions should be modified to not use a global, but this PR makes things deterministic at least. My only hesitation is whether errors are checked in different threads to where they occur, but I figure that's probably unlikely (and is less bad than racing code). As an aside, segfault evidence before this patch when I was doing some debugging: ``` $ while grep 'No such file or directory' log2; do RUST_LOG=debug ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc -o "" y.rs >log2 2>&1; done error: could not write output to : No such file or directory error: could not write output to : No such file or directory error: could not write output to : No such file or directory error: could not write output to : No such file or directory error: could not write output to : No such file or directory error: could not write output to : No such file or directory error: could not write output to : No such file or directory Segmentation fault (core dumped) error: could not write output to : No such file or directory error: could not write output to : No such file or directory ```
2017-10-10Band-aid fix to stop race conditions in llvm errorsAidan Hobson Sayers-1/+1
This is a big hammer, but should be effective at completely removing a few issues, including inconsistent error messages and segfaults when LLVM workers race to report results LLVM_THREAD_LOCAL has been present in LLVM since 8 months before 3.7 (the earliest supported LLVM version that Rust can use) Maybe fixes #43402 (third time lucky?)
2017-10-10Auto merge of #44877 - nvzqz:box-conversions, r=alexcrichtonbors-4/+40
Improve raw Box conversions This PR has two goals: - Reduce use of `mem::transmute` in `Box` conversions I understand that `mem::transmute`-ing non `#[repr(C)]` types is implementation-defined behavior. This may not matter within the reference implementation of Rust, but I believe it's important to remain consistent. For example, I noticed that `str::from_utf8_unchecked` went from using `mem::transmute` to using pointer casts. - Make `Box` pointer conversions more straightforward regarding `Unique`
2017-10-10Auto merge of #45141 - kennytm:rollup, r=kennytmbors-225/+437
Rollup of 9 pull requests - Successful merges: #44962, #45051, #45091, #45106, #45117, #45118, #45120, #45125, #45136 - Failed merges:
2017-10-10Rename test Linux target to avoid conflict with built-in targetPhilipp Oppermann-1/+1
It seems like the file wasn't actually used, since there is a built-in target with the same name. See https://github.com/rust-lang/rust/pull/45108#issuecomment-335173165 for more details.
2017-10-10Auto merge of #44822 - frewsxcv:frewsxcv-eprintln, r=Kimundibors-64/+30
Migrate to eprint/eprintln macros where appropriate. None
2017-10-09Refactor to use `debug_struct` in several Debug implsMalo Jaffré-61/+42
Fixes #44771.
2017-10-09Update let-expressions.rsgaurikholkar-0/+160
2017-10-09Fix a bug in diagnostics for `x as usize < y`Vadim Petrochenkov-5/+74
Improve diagnostics for `x as usize << y`
2017-10-09Auto merge of #45111 - aidanhs:aphs-bubble-worker-failures, r=alexcrichtonbors-6/+10
Don't panic in the coordinator thread, bubble up the failure Fixes #43402 (take 2) Followup to #45019, this makes the coordinator thread not panic on worker failures since they can be reported reasonably back in the main thread. The output also now has no evidence of backtraces at all, unlike the previous PR: ``` $ ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc -o "" x.rs error: could not write output to : No such file or directory error: aborting due to previous error ``` r? @alexcrichton
2017-10-10Rollup merge of #45125 - bleibig:grammar-update, r=alexcrichtonkennytm-186/+271
Update grammar to parse current rust syntax Mainly addressing #32723. This PR updates the bison grammar so that it can parse the current rust syntax, except for feature-gated syntax additions. It has been tested with all the tests in run-pass. The grammar in this repo doesn't have build logic anymore, but you can test it out in https://github.com/bleibig/rust-grammar, which has all of what's in this PR. If you are interested in having build logic and grammar tests again, I can look into implementing that as well. I'm aware that things are somewhat undecided as to what an official rust grammar should be from the discussion in #30942. With this PR we can go back to having an up-to-date flex/bison based grammar, but the rustypop grammar looks interesting as well.
2017-10-10Rollup merge of #45120 - johnthagen:none-identity-test, r=sfacklerkennytm-1/+1
Use identity operator `is` when comparing to None This is very minor, but idiomatic Python code uses `is` for comparisons to `None`. This is because semantically we want to compare to the "identity" of `None`, not its value. See [PEP8 for details](https://www.python.org/dev/peps/pep-0008/#programming-recommendations).
2017-10-10Rollup merge of #45118 - johnthagen:fix-section-key-name, r=alexcrichtonkennytm-1/+1
Fix variable name reference As best I can tell, this was a typo due to how similar it looks to the function above it. PyCharm found this as a unbound local variable.
2017-10-10Rollup merge of #45117 - johnthagen:fix-str-raise, r=alexcrichtonkennytm-1/+1
Fix raising a bare str as an exception in configure.py Raising a bare `str` has been [deprecated since Python 2.5](https://docs.python.org/2/whatsnew/2.5.html#pep-352-exceptions-as-new-style-classes). On Python 2.7 it produces the following error: ``` TypeError: exceptions must be old-style classes or derived from BaseException, not str ``` For maximum compatibility with Python 2.7 and 3.x, we wrap the error message in `RuntimeError` which derives from `Exception`.
2017-10-10Rollup merge of #45106 - Pirh:process_stdio_docs, r=dtolnaykennytm-1/+108
Add links and examples for std::process::Stdio As per #29370
2017-10-10Rollup merge of #45091 - kennytm:fix-45086, r=michaelwoeristerkennytm-1/+1
debuginfo-test: Fix #45086. Fixes #45086, where all debuginfo-lldb fails when using LLDB from Xcode 9.
2017-10-10Rollup merge of #45051 - k0pernicus:master, r=michaelwoeristerkennytm-29/+47
Debugger pretty printer files are take into account in test execution time-stamping This PR is proposed to solve the issue #45022.
2017-10-10Rollup merge of #44962 - shepmaster:no-ignore-result, r=steveklabnikkennytm-5/+7
Don't encourage people to ignore threading errors in the docs
2017-10-09incr.comp.: Add some documentation to force_from_dep_node().Michael Woerister-4/+47
2017-10-09Auto merge of #45075 - alexcrichton:inline-less, r=michaelwoeristerbors-83/+202
rustc: Don't inline in CGUs at -O0 This commit tweaks the behavior of inlining functions into multiple codegen units when rustc is compiling in debug mode. Today rustc will unconditionally treat `#[inline]` functions by translating them into all codegen units that they're needed within, marking the linkage as `internal`. This commit changes the behavior so that in debug mode (compiling at `-O0`) rustc will instead only translate `#[inline]` functions into *one* codegen unit, forcing all other codegen units to reference this one copy. The goal here is to improve debug compile times by reducing the amount of translation that happens on behalf of multiple codegen units. It was discovered in #44941 that increasing the number of codegen units had the adverse side effect of increasing the overal work done by the compiler, and the suspicion here was that the compiler was inlining, translating, and codegen'ing more functions with more codegen units (for example `String` would be basically inlined into all codegen units if used). The strategy in this commit should reduce the cost of `#[inline]` functions to being equivalent to one codegen unit, which is only translating and codegen'ing inline functions once. Collected [data] shows that this does indeed improve the situation from [before] as the overall cpu-clock time increases at a much slower rate and when pinned to one core rustc does not consume significantly more wall clock time than with one codegen unit. One caveat of this commit is that the symbol names for inlined functions that are only translated once needed some slight tweaking. These inline functions could be translated into multiple crates and we need to make sure the symbols don't collideA so the crate name/disambiguator is mixed in to the symbol name hash in these situations. [data]: https://github.com/rust-lang/rust/issues/44941#issuecomment-334880911 [before]: https://github.com/rust-lang/rust/issues/44941#issuecomment-334583384
2017-10-09incr.comp.: Move macro-export test case to src/test/incremental.Michael Woerister-2/+1
2017-10-09New rebase for the issue #45022k0pernicus-29/+47
Add pretty printer files into test execution time-stamping Move find_rust_src_path() as a method for Config Move find_rust_src_path() as a method for Config Call find_rust_src_path() from Config Move find_rust_src_path() from common.rs to header.rs Add pretty printer files as relevant files to get up_to_date information Remove dead code Add two pretty printer files to keep a close watch on Move find_rust_src_path() as a method for Config Move find_rust_src_path() as a method for Config Call find_rust_src_path() from Config Move find_rust_src_path() from common.rs to header.rs Remove dead code Add two pretty printer files to keep a close watch on
2017-10-09Auto merge of #45064 - alexcrichton:reduce-codegen-units, r=michaelwoeristerbors-2/+16
rustc: Reduce default CGUs to 16 Rationale explained in the included comment as well as #44941
2017-10-09Auto merge of #45041 - est31:master, r=alexcrichtonbors-295/+8
Remove support for the PNaCl target (le32-unknown-nacl) This removes support for the `le32-unknown-nacl` target which is currently supported by rustc on tier 3. Despite the "nacl" in the name, the target doesn't output native code (x86, ARM, MIPS), instead it outputs binaries in the PNaCl format. There are two reasons for the removal: * Google [has announced](https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html) deprecation of the PNaCl format. The suggestion is to migrate to wasm. Happens we already have a wasm backend! * Our PNaCl LLVM backend is provided by the fastcomp patch set that the LLVM fork used by rustc contains in addition to vanilla LLVM (`src/llvm/lib/Target/JSBackend/NaCl`). Upstream LLVM doesn't have PNaCl support. Removing PNaCl support will enable us to move away from fastcomp (#44006) and have a lighter set of patches on top of upstream LLVM inside our LLVM fork. This will help distribution packagers of Rust. Fixes #42420