Commit graph

21441 commits

Author SHA1 Message Date
Danek Duvall
45b90ef52e Some tests use res_init() and need -lresolv on Solaris
This is a follow-up to ea23e50f, which fixed it for the build.
2017-08-03 15:38:34 -07:00
bors
8cb4b2c589 Auto merge of #43609 - dsprenkels:issue-40510, r=Mark-Simulacrum
Add regression test for #40510

This pull request adds a test case for issue #40510.

Fixes #40510.
2017-08-03 14:21:37 +00:00
scalexm
2e8e75f50f Tweak error message 2017-08-03 14:40:40 +02:00
scalexm
ac919d527c Add a more precise error message
When trying to perform static dispatch on something which derefs
to a trait object, and the target trait is not in scope, we had
confusing error messages if the target method had a
`Self: Sized` bound. We add a more precise error message in this
case: "consider using trait ...".

Fixes #35976.
2017-08-03 14:40:40 +02:00
Daan Sprenkels
a704511f9d Add more regression tests for #40510 2017-08-03 13:14:47 +07:00
Eduard-Mihai Burtescu
9861df4760 rustc_const_math: use apfloat::ieee::{Single,Double} in ConstFloat. 2017-08-02 17:28:11 +03:00
Ralf Jung
7d8dc7a979 also release-validate return value before a call 2017-08-01 21:06:33 -07:00
Mario Idival
fefe63ce04 Remove unecessary test code #43219 2017-08-02 00:06:42 -03:00
Daan Sprenkels
92836e397c Add regression test for #40510 2017-08-02 04:02:30 +02:00
bors
640cfc852a Auto merge of #43576 - arielb1:no-unneeded-unwind, r=eddyb
rustc_mir: don't build unused unwind cleanup blocks

When building a scope exit, don't build unwind cleanup blocks unless they will actually be used by the unwind path of a drop - the unused blocks are removed by SimplifyCfg, but they can cause a significant performance slowdown before they are removed. That fixes #43511.

Also a few other small MIR cleanups & optimizations.

r? @eddyb
2017-08-01 22:43:15 +00:00
Isaac van Bakel
bb578b6e12 Added tests for bugs fixed. 2017-08-01 23:01:25 +01:00
Ralf Jung
a8129d128c add a closure inside an unsafe fn to the tests 2017-08-01 13:14:32 -07:00
bors
e772c28d2e Auto merge of #43506 - michaelwoerister:async-llvm, r=alexcrichton
Run translation and LLVM in parallel when compiling with multiple CGUs

This is still a work in progress but the bulk of the implementation is done, so I thought it would be good to get it in front of more eyes.

This PR makes the compiler start running LLVM while translation is still in progress, effectively allowing for more parallelism towards the end of the compilation pipeline. It also allows the main thread to switch between either translation or running LLVM, which allows to reduce peak memory usage since not all LLVM module have to be kept in memory until linking. This is especially good for incr. comp. but it works just as well when running with `-Ccodegen-units=N`.

In order to help tuning and debugging the work scheduler, the PR adds the `-Ztrans-time-graph` flag which spits out html files that show how work packages where scheduled:
![Building regex](https://user-images.githubusercontent.com/1825894/28679272-f6752bd8-72f2-11e7-8a6c-56207855ce95.png)
(red is translation, green is llvm)

One side effect here is that `-Ztime-passes` might show something not quite correct because trans and LLVM are not strictly separated anymore. I plan to have some special handling there that will try to produce useful output.

One open question is how to determine whether the trans-thread should switch to intermediate LLVM processing.

TODO:
- [x] Restore `-Z time-passes` output for LLVM.
- [x] Update documentation, esp. for work package scheduling.
- [x] Tune the scheduling algorithm.

cc @alexcrichton @rust-lang/compiler
2017-08-01 17:21:24 +00:00
Ralf Jung
4310edb4cb handle tuple struct ctors 2017-08-01 08:48:28 -07:00
bors
c2407516ff Auto merge of #43568 - arielb1:constant-recovery, r=eddyb
trans::mir::constant - fix assignment error recovery

trans::mir::constant - fix assignment error recovery

We used to not store anything when the RHS of an assignment returned an error, which caused ICEs downstream.

Fixes #43197.
2017-08-01 14:20:23 +00:00
Michael Woerister
6468cad977 async-llvm(29): Adapt run-make/llvm-phase test case to LLVM module not being available in memory. 2017-08-01 15:57:38 +02:00
bors
6e8452ee4f Auto merge of #43552 - petrochenkov:instab, r=jseyfried
resolve: Try to fix instability in import suggestions

cc https://github.com/rust-lang/rust/pull/42033

`lookup_import_candidates` walks module graph in DFS order and skips modules that were already visited (which is correct because there can be cycles).
However it means that if we visited `std::prelude::v1::Result::Ok` first, we will never visit `std::result::Result::Ok` because `Result` will be skipped as already visited (note: enums are also modules here), and otherwise, if we visited `std::result::Result::Ok` first, we will never get to `std::prelude::v1::Result::Ok`.
What child module of `std` (`prelude` or `result`) we will visit first, depends on randomized hashing, so we have instability in diagnostics.

With this patch modules' children are visited in stable order in `lookup_import_candidates`, this should fix the issue, but let's see what Travis will say.

r? @oli-obk
2017-08-01 06:05:34 +00:00
Ralf Jung
584d823bf2 Handle closures. Add some more tests. 2017-07-31 20:00:20 -07:00
Zack M. Davis
2dbfa3995e limit and delimit available fields in note
Also, don't show the note if no fields are available (usually due to
privacy).
2017-07-31 18:45:02 -07:00
Ralf Jung
e73d3145f5 fix AddValidation on methods 2017-07-31 18:33:45 -07:00
Ralf Jung
09cbe588c3 more readable printing of validation operands 2017-07-31 15:59:29 -07:00
Ralf Jung
5e426e1068 optionally only emit basic validation for functions containing unsafe block / unsafe function 2017-07-31 15:46:36 -07:00
Ariel Ben-Yehuda
5b99523de9 rustc_mir::transform::simplify - remove nops first
Removing nops can allow more basic blocks to be merged, but merging
basic blocks can't allow for more nops to be removed, so we should
remove nops first.

This doesn't matter *that* much, because normally we run SimplifyCfg
several times, but there's no reason not to do it.
2017-08-01 00:12:31 +03:00
Ariel Ben-Yehuda
85c102757a rustc_mir: don't build unused unwind cleanup blocks
The unused blocks are removed by SimplifyCfg, but they can cause a
significant performance slowdown before they are removed.
2017-08-01 00:12:30 +03:00
Ariel Ben-Yehuda
93db1f9923 trans::mir::constant - fix assignment error recovery
We used to not store anything when the RHS of an assignment returned an
error, which caused ICEs downstream.

Fixes #43197.
2017-07-31 18:09:02 +03:00
Ariel Ben-Yehuda
1057a728f5 fix -Z treat-err-as-bug 2017-07-31 18:09:02 +03:00
Niko Matsakis
2574f31b9b save the subobligations as well 2017-07-30 11:07:28 -07:00
bors
477e9f0171 Auto merge of #43543 - petrochenkov:32330, r=nikomatsakis
Cleanup some remains of `hr_lifetime_in_assoc_type` compatibility lint

r? @nikomatsakis
2017-07-30 12:48:20 +00:00
Vadim Petrochenkov
a6993d6469 resolve: Fix instability in import suggestions 2017-07-30 12:27:57 +03:00
Ralf Jung
29ed317ecb silence tidy 2017-07-30 01:11:59 -07:00
Ralf Jung
57958d1a04 Add tests for emitting validation statements 2017-07-30 01:11:59 -07:00
bors
5c71e4ef90 Auto merge of #43551 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 8 pull requests

- Successful merges: #43409, #43501, #43509, #43512, #43513, #43536, #43544, #43549
- Failed merges:
2017-07-30 01:40:11 +00:00
Mark Simulacrum
a3eadd767e Rollup merge of #43513 - alexcrichton:inline-repeat, r=BurntSushi
std: Mark `Layout::repeat` as `#[inline]`

This fixes an optimization regression by allowing LLVM to see through more
functions.

Closes #43272
2017-07-29 18:03:55 -06:00
bors
53bf7903fa Auto merge of #43009 - GuillaumeGomez:unused-doc-comments, r=nrc
Throw errors when doc comments are added where they're unused

#42617
2017-07-29 23:01:45 +00:00
Alex Crichton
cc4ff8f4d1 Use a free error code 2017-07-29 09:30:03 -07:00
Alex Crichton
54b6b23fc0 std: Mark Layout::repeat as #[inline]
This fixes an optimization regression by allowing LLVM to see through more
functions.

Closes #43272
2017-07-29 09:03:06 -07:00
Vadim Petrochenkov
80cf3f99f4 Cleanup some remains of hr_lifetime_in_assoc_type compatibility lint 2017-07-29 17:50:42 +03:00
gaurikholkar
cb93cc6299 changing E0623 error message 2017-07-29 17:40:16 +05:30
bors
6dd8744a11 Auto merge of #43492 - lu-zero:master, r=alexcrichton
More Altivec Intrinsics
2017-07-29 03:58:18 +00:00
Alex Crichton
06ce77cb39 Merge remote-tracking branch 'origin/master' into gen 2017-07-28 13:07:15 -07:00
bors
126321e2e5 Auto merge of #43230 - alexcrichton:more-tokenstream, r=nrc,jseyfried
Implement tokenization for some items in proc_macro

This PR is a partial implementation of https://github.com/rust-lang/rust/issues/43081 targeted towards preserving span information in attribute-like procedural macros. Currently all attribute-like macros will lose span information with the input token stream if it's iterated over due to the inability of the compiler to losslessly tokenize an AST node. This PR takes a strategy of saving off a list of tokens in particular AST nodes to return a lossless tokenized version. There's a few limitations with this PR, however, so the old fallback remains in place.
2017-07-28 18:31:52 +00:00
Alex Crichton
4886ec8665 syntax: Capture a TokenStream when parsing items
This is then later used by `proc_macro` to generate a new
`proc_macro::TokenTree` which preserves span information. Unfortunately this
isn't a bullet-proof approach as it doesn't handle the case when there's still
other attributes on the item, especially inner attributes.

Despite this the intention here is to solve the primary use case for procedural
attributes, attached to functions as outer attributes, likely bare. In this
situation we should be able to now yield a lossless stream of tokens to preserve
span information.
2017-07-28 10:47:01 -07:00
bors
eba9d7f08c Auto merge of #43298 - gaurikholkar:lifetime_errors, r=estebank
improve case with both anonymous lifetime parameters #43269

This is a fix to #43269.

Sample output message-

```

error[E0623]: lifetime mismatch
  --> $DIR/ex3-both-anon-regions.rs:12:12
   |
11 | fn foo(x: &mut Vec<&u8>, y: &u8) {
   |                    ---      --- these references must have the same lifetime
12 |     x.push(y);
   |            ^ data from `y` flows into `x` here

error: aborting due to 2 previous errors

```
r? @nikomatsakis
2017-07-28 16:03:32 +00:00
Alex Crichton
036300aadd Add a failing test for errors in proc macros
This test currently fails because the tokenization of an AST item during the
expansion of a procedural macro attribute rounds-trips through strings, losing
span information.
2017-07-28 07:58:20 -07:00
Luca Barbato
c4710203c0 Make LLVMRustHasFeature more robust
The function should accept feature strings that old LLVM might not
support.

Simplify the code using the same approach used by
LLVMRustPrintTargetFeatures.

Dummify the function for non 4.0 LLVM and update the tests accordingly.
2017-07-28 14:30:06 +00:00
Alex Crichton
ff996853fe Fix more tests with GeneratorState rename 2017-07-28 15:47:55 +02:00
John Kåre Alsaker
be0a9b8958 Fix tests 2017-07-28 15:47:55 +02:00
John Kåre Alsaker
93b9b1a2b1 Fix tests 2017-07-28 15:47:55 +02:00
Niko Matsakis
39478e8ab1 update references due to removing tabs 2017-07-28 15:46:27 +02:00
John Kåre Alsaker
d32428bc5f Remove tabs 2017-07-28 15:46:27 +02:00