Commit graph

17031 commits

Author SHA1 Message Date
Zack M. Davis
214b0f2293 crate shorthand visibility modifier
With regrets, this breaks rustfmt and rls.

This is in the matter of #45388.
2017-10-22 23:58:13 -07:00
bors
fc1a03d7d0 Auto merge of #45442 - matthewjasper:const-dynamic-capture-error, r=petrochenkov
Cleanly error for non-const variable in associated const

Not sure if wrapping the whole `visit::walk_impl_item` call is correct.
Closes #44239
2017-10-22 15:17:08 +00:00
bors
d532ba7c62 Auto merge of #45391 - malbarbo:x32-1, r=alexcrichton
Update libc and some fixes for x86_64-unknown-linux-gnux32
2017-10-21 09:37:11 +00:00
bors
6511b4f7ee Auto merge of #45348 - alexcrichton:thinlto-timp, r=michaelwoerister
rustc: Add `_imp_` symbols later in compilation

On MSVC targets rustc will add symbols prefixed with `_imp_` to LLVM modules to
"emulate" dllexported statics as that workaround is still in place after #27438
hasn't been solved otherwise. These statics, however, were getting gc'd by
ThinLTO accidentally which later would cause linking failures.

This commit updates the location we add such symbols to happen just before
codegen to ensure that (a) they're not eliminated by the optimizer and (b) the
optimizer doesn't even worry about them.

Closes #45347
2017-10-20 23:08:17 +00:00
Marco A L Barbosa
e57ee3d0bf Fix some tests for linux gnux32 2017-10-20 13:18:16 -02:00
bors
87a8e8e073 Auto merge of #45359 - arielb1:escaping-borrow, r=eddyb
Fix a few bugs in drop generation

This fixes a few bugs in drop generation, one of which causes spurious MIR borrowck errors.

Fixes #44832.

r? @eddyb
2017-10-20 14:33:43 +00:00
bors
c0956ff265 Auto merge of #45319 - michaelwoerister:use-128bit-siphash, r=nikomatsakis
incr.comp.: Use 128bit SipHash for fingerprinting

This PR switches incr. comp. result fingerprinting from 128 bit BLAKE2 to 128 bit SipHash. When we started using BLAKE2 for fingerprinting, the 128 bit version of SipHash was still experimental. Now that it isn't anymore we should be able to get a nice performance boost without significantly increasing collision probability.

~~I'm going to start a try-build for this, so we can gauge the performance impact before merging (hence the `WIP` in the title).~~

EDIT: Performance improvements look as expected. Tests seem to be passing.

Fixes #41215.
2017-10-20 07:50:18 +00:00
bors
c0e0a38101 Auto merge of #45316 - goffrie:exitable-breakable-block, r=nikomatsakis
Mark block exits as reachable if the block can break.

This only happens when desugaring `catch` expressions for now, but regular blocks (in HIR) can be broken from - respect that when doing reachability analysis.

Fixes #45124.
2017-10-20 05:24:04 +00:00
bors
4750c1ec04 Auto merge of #45080 - clippered:issue-44986/fix-windows-ui-path, r=estebank
Issue 44986/fix windows ui path

#44968
2017-10-19 21:14:32 +00:00
matthewjasper
02635c2d37 Cleanly error for non-const expression in associated const 2017-10-19 19:48:57 +01:00
kennytm
342e01b742
Rollup merge of #45352 - alexcrichton:emscripten-tests, r=nikomatsakis
test: Update Emscripten failures/passing

All tests should now have annotation for *why* they're ignored on emscripten. A
few tests no longer need such an annotation as well!

Closes #41299
2017-10-20 00:01:52 +08:00
bors
e3fb84e951 Auto merge of #45232 - zackmdavis:moar_lint_suggestions, r=estebank
code suggestions for non-shorthand field pattern, no-mangle lints

continuing in the spirit of #44942

![moar_lint_suggestions](https://user-images.githubusercontent.com/1076988/31485011-3b20cc80-aee7-11e7-993d-81267ab77732.png)

r? @estebank
2017-10-19 11:41:11 +00:00
kennytm
c77068a94b Rollup merge of #45326 - cuviper:min-llvm-3.9, r=alexcrichton
Bump the minimum LLVM to 3.9

Old LLVM bugs are reportedly cropping up harder, but 3.9 seems to be OK.

Fixes #45277.
2017-10-19 01:59:52 +08:00
kennytm
ebdfe338e5 Rollup merge of #44138 - steveklabnik:rustdoc-deprecations, r=QuietMisdreavus
Deprecate several flags in rustdoc

Part of #44136

cc @rust-lang/dev-tools @rust-lang/docs

This is a very basic PR to start deprecating some flags; `rustdoc` doesn't really have fancy output options like `rustc` does, so I went with `eprintln!`. Happy to change it if people feel that's not appropriate.

Also, I have no idea if we can or should write tests here, so I didn't try. If someone feels strongly about it, then let's do it, but given that the only outcome here is a side effect...
2017-10-19 01:59:44 +08:00
Josh Stone
6309a475f9 Remove two obsolete min-llvm-version tests 2017-10-18 07:54:35 -07:00
Alex Crichton
3541ffb668 rustc: Add _imp_ symbols later in compilation
On MSVC targets rustc will add symbols prefixed with `_imp_` to LLVM modules to
"emulate" dllexported statics as that workaround is still in place after #27438
hasn't been solved otherwise. These statics, however, were getting gc'd by
ThinLTO accidentally which later would cause linking failures.

This commit updates the location we add such symbols to happen just before
codegen to ensure that (a) they're not eliminated by the optimizer and (b) the
optimizer doesn't even worry about them.

Closes #45347
2017-10-18 07:01:29 -07:00
Ariel Ben-Yehuda
0caba178df run EndRegion when unwinding otherwise-empty scopes
Improves #44832

borrowck-overloaded-index-move-index.rs - fixed
borrowck-multiple-captures.rs - still ICE
borrowck-issue-2657-1.rs - fixed
borrowck-loan-blocks-move.rs - fixed
borrowck-move-from-subpath-of-borrowed-path.rs - fixed
borrowck-mut-borrow-linear-errors.rs - still ICE
borrowck-no-cycle-in-exchange-heap.rs - fixed
borrowck-unary-move.rs - fixed
borrowck-loan-blocks-move-cc.rs - fixed
borrowck-vec-pattern-element-loan.rs - still broken
2017-10-18 14:11:06 +03:00
bors
7a4f39453c Auto merge of #44501 - nikomatsakis:issue-44137-non-query-data-in-tcx, r=eddyb
remove or encapsulate the remaining non-query data in tcx

I wound up removing the existing cache around inhabitedness since it didn't seem to be adding much value. I reworked const rvalue promotion, but not that much (i.e., I did not split the computation into bits, as @eddyb had tossed out as a suggestion). But it's now demand driven, at least.

cc @michaelwoerister -- see the `forbid_reads` change in last commit

r? @eddyb -- since the trickiest of this PR is the work on const rvalue promotion

cc #44137
2017-10-18 10:44:08 +00:00
Alex Crichton
d9ecdfe3a7 test: Update Emscripten failures/passing
All tests should now have annotation for *why* they're ignored on emscripten. A
few tests no longer need such an annotation as well!

Closes #41299
2017-10-17 18:46:38 -07:00
steveklabnik
045ce183cc modify tests to use new flag 2017-10-17 15:38:52 -04:00
Ariel Ben-Yehuda
a6ca84a383 look past the next drop for the drop panic target
The previous code would leak data on a drop panic if the immediate next
drop was a StorageDead that was followed by another drop.
2017-10-17 21:37:18 +03:00
kennytm
87729fcdba Rollup merge of #45315 - zackmdavis:expected_statement_after_outer_attr_after_inner_attr, r=petrochenkov
don't issue "expected statement after outer attr." after inner attr.

While an inner attribute here is in fact erroneous, that error ("inner
attribute is not permitted in this context") successfully gets set earlier;
this further admonition is nonsensical.

Resolves #45296.
2017-10-17 22:21:01 +08:00
Ariel Ben-Yehuda
a151d37401 fix generator drop caching
Fixes #45328.
2017-10-17 15:20:22 +03:00
bors
611f375a86 Auto merge of #45311 - goffrie:issue-40003, r=alexcrichton
Add the test for #40003.

I checked that the test failed to compile on an older nightly (I tried 2017-09-29) and that it compiles against master.

Closes #40003.
2017-10-17 09:00:11 +00:00
Niko Matsakis
5c26509405 restructure the public inhabitedness APIs and remove the cache
The cache was broken anyhow and this computation doesn't look that
expensive. These public accessors could potentially become queries,
but we'd have to add some more complex logic around lift. I'd prefer
to have some test cases to profile with before doing that.

Fixes #44402.
2017-10-16 17:32:21 -04:00
bors
5618aba380 Auto merge of #44857 - toidiu:ak-44493-empty-predicate, r=nikomatsakis
#44493 add structure for inferred_outlives_of

#44493

- add placeholder for the final implementation of inferred_outlives_of
- add some placeholder tests
2017-10-16 21:29:54 +00:00
Josh Stone
7538a9b8af Update the codegen/mainsubprogram tests to min-llvm 4.0
The necessary changes were only in upstream LLVM in 4.0, but they were
for a while backported to Rust LLVM.  Now that Rust LLVM is also 4.0, we
can make the test conditional here more accurate.
2017-10-16 13:10:16 -07:00
Zack M. Davis
8e6ed1203b bolster UI test converage for lint suggestions 2017-10-16 12:14:15 -07:00
toidiu
fe5cb1a517 add error to the correct line in unit test 2017-10-16 14:26:17 -04:00
toidiu
c021e5303f add a test case
dont duplicate error codes

choose unlikely error code

specify error pattern in test
2017-10-16 14:26:17 -04:00
Zack M. Davis
38e5a964f2 code suggestions for no-mangle lints
At reviewer's suggestion, we remove the function/static name from the
main lint message. While we're correspondingly adjusting the
expectations of a compile-fail test, we remove an obsolete FIXME
comment, another quantum of progress towards resolving the fabulous
metabug #44366.
2017-10-16 11:19:18 -07:00
bors
ba4e8d7db3 Auto merge of #45202 - alexcrichton:fix-inline-always, r=michaelwoerister
rustc: Handle #[inline(always)] at -O0

This commit updates the handling of `#[inline(always)]` functions at -O0 to
ensure that it's always inlined regardless of the number of codegen units used.

Closes #45201
2017-10-16 16:02:43 +00:00
Michael Woerister
27b6c9174d Update crate hashes in mir-opt test after changing hash algorithm. 2017-10-16 17:32:38 +02:00
bors
abe7c87eef Auto merge of #45297 - matthewjasper:associated-item-namespaces, r=petrochenkov
Check namespaces when resolving associated items in typeck

Closes #35600
Closes #44247
Fixes a "cannot move a value of type..." error in the same case as #44247 but with the associated items swapped.
2017-10-16 06:40:04 +00:00
Geoffry Song
57f03ea5ff Mark block exits as reachable if the block can break. 2017-10-15 21:19:00 -07:00
bors
fdec805d03 Auto merge of #45283 - alexcrichton:used-mut-nodes, r=arielb1
rustc: Remove `used_mut_nodes` from `TyCtxt`

This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.

Closes #42384
2017-10-16 03:02:05 +00:00
Zack M. Davis
696612c02f don't issue "expected statement after outer attr." after inner attr.
While an inner attribute here is in fact erroneous, that error ("inner
attribute is not permitted in this context") successfully gets set earlier;
this further admonition is nonsensical.

Resolves #45296.
2017-10-15 19:41:12 -07:00
bors
9223c39dc5 Auto merge of #45191 - petrochenkov:yesar, r=Mark-Simulacrum
rustbuild: Support specifying archiver and linker explicitly

With this patch `x.py test` passes without toolchain being in `PATH` if `cc`, `cxx`, `ar`, `linker` and `gdb` are specified in `config.toml` (except for a few `run-make` tests using `nm`).

Fixes https://github.com/rust-lang/rust/issues/41821
r? @Mark-Simulacrum
2017-10-16 00:32:21 +00:00
Geoffry Song
045916603e Add test for #40003. 2017-10-15 12:58:05 -07:00
Vadim Petrochenkov
9e0fc5ccd0 rustbuild: Support specifying archiver and linker explicitly 2017-10-15 22:10:07 +03:00
Alex Crichton
2e1c4cd0f5 rustc: Fix some ThinLTO internalization
First the `addPreservedGUID` function forgot to take care of "alias" summaries.
I'm not 100% sure what this is but the current code now matches upstream. Next
the `computeDeadSymbols` return value wasn't actually being used, but it needed
to be used! Together these should...

Closes #45195
2017-10-15 08:41:26 -07:00
bors
df095cefe2 Auto merge of #45123 - goffrie:fix-method-unit-call, r=oli-obk
Provide the full span of method calls to `check_argument_types`

... so that it includes the span of the passed arguments, not just the name of the called method.

Fixes #44760.
2017-10-15 11:31:46 +00:00
matthewjasper
b522ee15ce Check namespaces when resolving associated items in typeck 2017-10-15 11:58:32 +01:00
bors
f5eb33f4e5 Auto merge of #45200 - mikhail-m1:match-with-false-edges, r=nikomatsakis
MIR-borrowck: add false edges to match arms

basic fix for https://github.com/rust-lang/rust/issues/45043, should be modified with #45184
2017-10-15 02:20:13 +00:00
Alex Crichton
4df1278c69 rustc: Remove used_mut_nodes from TyCtxt
This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.

Closes #42384
2017-10-14 09:29:02 -07:00
bors
7920a7cc74 Auto merge of #45175 - petrochenkov:dyn, r=nikomatsakis
Implement `dyn Trait` syntax (RFC 2113)

cc https://github.com/rust-lang/rust/issues/44662
r? @nikomatsakis
2017-10-14 16:11:05 +00:00
bors
af7de7b677 Auto merge of #45162 - chrisvittal:mir-testing, r=nikomatsakis
Modify MIR testing to require consecutive lines

MIR testing now requires that lines be consecutive. To achive this,
instead of collecting the expected mir as a string, it is now wrapped in
an `ExpectedLine` enum, that is either `Elision` or `Text(T)` where `T:
AsRef<str>`. `Text` lines must be matched in order, unless separated by
`Elision` lines. Elision occurs lazily, that is, an Elision will skip
as few lines as possible.

To add a new elision marker. Put a comment containing only "..." and
whitespace in any MIR testing block. Like so:

```
// fn write_42(_1: *mut i32) -> bool {
//     ...
//     bb0: {
//         Validate(Acquire, [_1: *mut i32]);
//         Validate(Release, [_1: *mut i32]);
//         ...
//         return;
//     }
// }
```

Right now, all input before the line right after `// START` is elided,
and all input after the line right before `// END` is also not tested.

Many tests need to be updated. That will follow in the next commit.

cc #45153
r? @nikomatsakis
2017-10-14 11:22:46 +00:00
Vadim Petrochenkov
e6115af4bd Implement dyn Trait syntax 2017-10-14 12:51:13 +03:00
bors
2aeff0f1b3 Auto merge of #45104 - vitiral:incr_auto_assert2, r=michaelwoerister
Incremental compilation auto assert (with except)

cc @michaelwoerister

bors merged part 1, so this is a WIP of part 2 of #45009  -- auto asserting DepNodes depending on the type of node rustc_clean/dirty is attached to

Framework:
- [x] finish auto-detection for specified DepNodes
- [x] finish auto-detection for remaining DepNodes

Test Refactors:
- [x] consts.rs
- [x] enum_constructors.rs
- [x] extern_mods.rs
- [x] inherent_impls.rs
- [x] statics.rs
- [x] struct_constructors.rs
- ~~**BLOCKED** trait_defs.rs, see FIXME~~
- ~~**BLOCKED** trait_impls.rs~~
- [x] type_defs.rs
- [x] enum_defs.rs
2017-10-14 04:11:49 +00:00
Geoffry Song
bb4d1caad7 Pass the full span for method calls 2017-10-13 20:20:22 -07:00