Commit Graph

78632 Commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
072b0f617f rustc: removed unused DefPathData::Initializer DefId's for associated constants. 2018-05-19 18:47:06 +03:00
kennytm
9e914cc223
Rollup merge of #50531 - iancormac84:merge-typeidhasher-cleanup, r=michaelwoerister
Cleanup uses of TypeIdHasher and replace them with StableHasher

Fixes #50424

r? @michaelwoerister
2018-05-19 23:40:58 +08:00
bors
1b240dad06 Auto merge of #50763 - KyleStach1678:unused-loop-label, r=petrochenkov
Add lint checks for unused loop labels

Previously no warning was generated when a loop label was written out but never used (i.e. in a `break` or `continue` statement):
```rust
fn main() {
    'unused_label: loop {}
}
```
would compile without complaint.

This fix introduces `-W unused_loop_label`, which generates the following warning message for the above snippet:
```
warning: unused loop label
 --> main.rs:2:5
  |
2 |     'unused_label: loop {}
  |     ^^^^^^^^^^^^^
  |
  = note: #[warn(unused_loop_label)] on by default
```

Fixes: #50751.
2018-05-19 14:52:30 +00:00
David Wood
280c6fadee
Remove extra calls to kill_loans_out_of_scope_at_location - keep only before_statement_effect and before_terminator_effect. 2018-05-19 15:39:38 +01:00
Oliver Schneider
7c25aa79c5 Use Size instead of u64 in mir interpretation 2018-05-19 16:38:49 +02:00
Oliver Schneider
3e933f4d8c Keep statics' constant as ByRef 2018-05-19 14:24:24 +02:00
Oliver Schneider
6630678428 Go through an allocation when accessing fields of constants 2018-05-19 14:24:24 +02:00
Oliver Schneider
76ddede5c2 Reintroduce some sanity checks 2018-05-19 14:24:24 +02:00
Oliver Schneider
8b99c61701 Ensure that statics are always ByRef 2018-05-19 14:24:24 +02:00
bors
ef8ee64774 Auto merge of #50760 - petrochenkov:legimp, r=nikomatsakis
Turn deprecation lint `legacy_imports` into a hard error

Closes https://github.com/rust-lang/rust/issues/38260

The lint was introduced in Dec 2016, then made deny-by-default in Jun 2017 when crater run found 0 regressions caused by it.

This lint requires some not entirely trivial amount of import resolution logic that (surprisingly or not) interacts with `feature(use_extern_macros)` (https://github.com/rust-lang/rust/issues/35896), so it would be desirable to remove it before stabilizing `use_extern_macros`.
In particular, this PR fixes the failing example in https://github.com/rust-lang/rust/issues/50725 (but not the whole issue, `use std::panic::{self}` still can cause other undesirable errors when `use_extern_macros` is enabled).
2018-05-19 12:16:50 +00:00
Oliver Schneider
387875dfe3 Update clippy 2018-05-19 13:18:02 +02:00
Oliver Schneider
8753d0f12f Overflows only panic in debug mode 2018-05-19 13:10:52 +02:00
Oliver Schneider
27e710f557 Add a test showing the erroneous promoted bug 2018-05-19 13:10:51 +02:00
Oliver Schneider
d81651e8e9 Release mode overflows should not cause const eval to error 2018-05-19 13:10:51 +02:00
bors
c95e1cccc9 Auto merge of #50874 - nikomatsakis:nll-reset-unification, r=estebank
use `reset_unifications` instead of creating new unification table

This eliminates a hot spot in NLL performance.
2018-05-19 10:04:42 +00:00
bors
bdace29de0 Auto merge of #50744 - nikic:mutable-noalias, r=alexcrichton
Emit noalias on &mut parameters by default

This used to be disabled due to LLVM bugs in the handling of
noalias information in conjunction with unwinding. However,
according to #31681 all known LLVM bugs have been fixed by
LLVM 6.0, so it's probably time to reenable this optimization.

-Z no-mutable-noalias is left as an escape-hatch to debug problems
suspected to stem from this change.
2018-05-19 07:42:03 +00:00
bobtwinkles
e62fa27071 Refactor borrowck to share more code with fact dumping
Following up my changes in #50798, I wanted to grab at least the low-hanging
fruit for code deduplication.
2018-05-18 23:47:48 -07:00
bors
8319ef5b78 Auto merge of #50709 - alexcrichton:revert-musl, r=sfackler
Revert #50105 until regression is fixed

Discovered at https://github.com/rust-lang/rust/pull/50105#issuecomment-388630750 it looks like this caused a regression with i686 musl, so let's revert in the meantime while a fix is worked out
2018-05-19 03:10:53 +00:00
Dan Robertson
8b02488834
Fix warning when building stage0 libcore
When building stage0 a warning will be triggered when compiling libcore
due to align_to_offsets not being used.
2018-05-19 01:13:31 +00:00
bors
c6a1979e20 Auto merge of #50603 - eddyb:issue-49955, r=nikomatsakis
rustc_mir: allow promotion of promotable temps indexed at runtime.

Fixes #49955.

r? @nikomatsakis
2018-05-19 00:27:45 +00:00
Kyle Stachowicz
6da64a7666 Default unused_labels to allow, move to "unused" 2018-05-18 16:57:16 -07:00
Kyle Stachowicz
5586cd80e2 Revert "Remove unused label in mir"
This reverts commit b2a2450cf2925498e1c3bdd781aa1978f9eb00e5.
2018-05-18 16:57:16 -07:00
Kyle Stachowicz
335f91fd69 Revert "Allow unused_labels in some compile-fail tests"
This reverts commit b9257e2ca161b1bf5aae9d6b667f4d0c6b8d7be6.
2018-05-18 16:57:16 -07:00
Kyle Stachowicz
a336aa91db Allow unused_labels in some compile-fail tests 2018-05-18 16:57:16 -07:00
Kyle Stachowicz
f488d2b393 Remove unused label in mir 2018-05-18 16:57:16 -07:00
Kyle Stachowicz
702f1dd846 Add tests for new labeled blocks for unused_labels 2018-05-18 16:57:16 -07:00
Kyle Stachowicz
88f4063c83 Reimplement unused_labels lint as a compiler builtin in the resolver 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
7676982e90 Revert "Add lint checks for unused loop labels"
This functionality is being reimplemented in the resolver phase

This reverts commit 503a69e844970476b27bf1ac7be951bb22194f50.
2018-05-18 16:57:15 -07:00
Kyle Stachowicz
167cedefe6 Fix formatting in unused label linting to make tidy checks pass 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
4de4e61864 Fix ignored unused outer label when inner label shadows and is broken multiple times 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
0f274122ee Add test case for shadowed labels, with the inner broken multiple times 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
acd6ab8f0f Rename unused_loop_label to unused_label and fix/clean up lint logic 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
bb867d3512 Add additional test case to unused_label lint 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
7c4aa7362e Rename test to unused_label and remove empty stdout file 2018-05-18 16:57:15 -07:00
Kyle Stachowicz
d67628e053 Add lint checks for unused loop labels 2018-05-18 16:57:15 -07:00
Matthew Jasper
aa5635338c Filter global bounds from ParamEnv again. 2018-05-18 23:40:44 +01:00
bors
37a409177c Auto merge of #50319 - nagisa:align_to, r=alexcrichton
Implement [T]::align_to

Note that this PR deviates from what is accepted by RFC slightly by making `align_offset` to return an offset in elements, rather than bytes. This is necessary to sanely support `[T]::align_to` and also simply makes more sense™. The caveat is that trying to align a pointer of ZST is now an equivalent to `is_aligned` check, rather than anything else (as no number of ZST elements will align a misaligned ZST pointer).

It also implements the `align_to` slightly differently than proposed in the RFC to properly handle cases where size of T and U aren’t co-prime.

Furthermore, a promise is made that the slice containing `U`s will be as large as possible (contrary to the RFC) – otherwise the function is quite useless.

The implementation uses quite a few underhanded tricks and takes advantage of the fact that alignment is a power-of-two quite heavily to optimise the machine code down to something that results in as few known-expensive instructions as possible. Currently calling `ptr.align_offset` with an unknown-at-compile-time `align` results in code that has just a single "expensive" modulo operation; the rest is "cheap" arithmetic and bitwise ops.

cc https://github.com/rust-lang/rust/issues/44488 @oli-obk

As mentioned in the commit message for align_offset, many thanks go to Chris McDonald.
2018-05-18 21:49:38 +00:00
Niko Matsakis
cce9132780 track the root UseTree in addition to the leaf 2018-05-18 17:18:04 -04:00
Matthew Jasper
218a81b06c Prevent main and start from having a where clause. 2018-05-18 22:03:24 +01:00
Alex Crichton
5e4bac31b8 rustc: Disallow modules and macros in expansions
This commit feature gates generating modules and macro definitions in procedural
macro expansions. Custom derive is exempt from this check as it would be a large
retroactive breaking change (#50587). It's hoped that we can hopefully stem the
bleeding to figure out a better solution here before opening up the floodgates.

The restriction here is specifically targeted at surprising hygiene results [1]
that result in non-"copy/paste" behavior. Hygiene and procedural macros is
intended to be avoided as much as possible for Macros 1.2 by saying everything
is "as if you copy/pasted the code", but modules and macros are sort of weird
exceptions to this rule that aren't fully fleshed out.

[1]: https://github.com/rust-lang/rust/issues/50504#issuecomment-387734625

cc #50504
2018-05-18 13:25:08 -07:00
Niko Matsakis
7ed0fd7699 use reset_unifications instead of creating new unification table 2018-05-18 15:58:23 -04:00
QuietMisdreavus
d8265621d8 propagate "short form" into all Html prints 2018-05-18 14:55:11 -05:00
bors
952f344cdc Auto merge of #50697 - KiChjang:issue-50461, r=pnkfelix
Use EverInit instead of MaybeInit to determine initialization

Fixes #50461.
Fixes #50463.
2018-05-18 19:36:26 +00:00
Paolo Teti
4897093cfd armebv7r-none-eabihf: default to ARM mode
- remove +thumb2 that has not effect
- remove -mthumb

Tested on TMS570LS3137
2018-05-18 20:57:48 +02:00
Alex Crichton
0ee031ab96 rustc: Fix joint-ness of stringified token-streams
This commit fixes `StringReader`'s parsing of tokens which have been stringified
through procedural macros. Whether or not a token tree is joint is defined by
span information, but when working with procedural macros these spans are often
dummy and/or overridden which means that they end up considering all operators
joint if they can!

The fix here is to track the raw source span as opposed to the overridden span.
With this information we can more accurately classify `Punct` structs as either
joint or not.

Closes #50700
2018-05-18 10:36:24 -07:00
Isaac Whitfield
d95ba305b4 Catch an issue missed in rebase 2018-05-18 10:21:42 -07:00
bors
a722296b6e Auto merge of #50653 - oli-obk:bad_const, r=cramertj
Make the `const_err` lint `deny`-by-default

At best these things are runtime panics (debug mode) or overflows (release mode). More likely they are public constants that are unused in the crate declaring them.

This is not a breaking change, as dependencies won't break and root crates can `#![warn(const_err)]`, though I don't know why anyone would do that.
2018-05-18 17:17:35 +00:00
Isaac Whitfield
55a00a95cf Remove unnecessary impl methods for CrateMetadata 2018-05-18 09:38:08 -07:00
Isaac Whitfield
680f3b24ba Serialize attributes into the CrateRoot 2018-05-18 09:37:29 -07:00
Isaac Whitfield
ca60c404b6 Remove unnecessary clone call for panic_strategy 2018-05-18 09:37:29 -07:00