Commit Graph

77685 Commits

Author SHA1 Message Date
Michael Woerister
98bf62a109 Add tests for -Z cross-lang-lto. 2018-05-03 02:30:14 -07:00
Michael Woerister
443f99fca0 Add -Z cross-lang-lto flag in order to support linker-based LTO. 2018-05-03 02:30:14 -07:00
Michael Woerister
aed5b9c815 Declare embedded LLVM bitcode section readonly. 2018-05-03 02:30:14 -07:00
kennytm
4e3da52d02
Rollup merge of #50302 - GuillaumeGomez:add-query-search-order-check, r=QuietMisdreavus
Add query search order check

Fixes #50180.

r? @QuietMisdreavus
2018-05-03 16:11:26 +08:00
bors
698b956a9f Auto merge of #50391 - nnethercote:escape_unicode, r=eddyb
Use escape_default() for strings in LitKind::token().

This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.

r? @jseyfried

<details><summary>Here are full numbers for all the rustc-perf runs where the improvement was > 1%.</summary>

```
regex-check
	avg: -11.1%	min: -13.4%	max: -5.5%
futures-check
	avg: -7.6%	min: -11.4%	max: -3.5%
futures-opt
	avg: -6.3%	min: -10.3%	max: -2.3%
futures
	avg: -6.6%	min: -10.3%	max: -2.8%
regex-opt
	avg: -4.7%	min: -10.2%	max: -0.4%
regex
	avg: -5.3%	min: -10.2%	max: -1.2%
hyper-check
	avg: -4.8%	min: -6.6%	max: -2.7%
encoding-check
	avg: -4.1%	min: -5.5%	max: -2.5%
issue-46449-check
	avg: -4.7%	min: -5.2%	max: -4.1%
clap-rs-check
	avg: -2.9%	min: -5.2%	max: -1.1%
hyper
	avg: -3.0%	min: -5.1%	max: -0.8%
parser-check
	avg: -4.2%	min: -4.9%	max: -3.2%
hyper-opt
	avg: -2.6%	min: -4.9%	max: -0.3%
encoding-opt
	avg: -2.3%	min: -4.6%	max: -0.5%
encoding
	avg: -2.5%	min: -4.4%	max: -0.6%
issue-46449
	avg: -2.3%	min: -4.4%	max: -1.8%
issue-46449-opt
	avg: -1.7%	min: -4.3%	max: -0.9%
clap-rs-opt
	avg: -1.6%	min: -4.2%	max: -0.2%
serde-check
	avg: -1.4%	min: -4.1%	max: -0.2%
clap-rs
	avg: -1.6%	min: -3.9%	max: -0.7%
unify-linearly-check
	avg: -3.2%	min: -3.7%	max: -2.7%
serde
	avg: -1.1%	min: -3.5%	max: -0.1%
regression-31157-check
	avg: -2.6%	min: -3.4%	max: -1.6%
helloworld-check
	avg: -2.5%	min: -3.4%	max: -0.6%
serde-opt
	avg: -1.3%	min: -3.3%	max: -0.5%
tokio-webpush-simple-check
	avg: -2.4%	min: -3.2%	max: -1.8%
piston-image-check
	avg: -1.7%	min: -3.2%	max: -0.9%
deeply-nested-opt
	avg: -1.5%	min: -3.0%	max: -0.6%
deeply-nested-check
	avg: -1.9%	min: -2.9%	max: -0.4%
deeply-nested
	avg: -1.9%	min: -2.9%	max: -1.2%
syn-check
	avg: -1.8%	min: -2.8%	max: -0.6%
coercions
	avg: -0.5%	min: -2.8%	max: 0.4%
syn-opt
	avg: -0.9%	min: -2.4%	max: -0.1%
syn
	avg: -1.1%	min: -2.2%	max: -0.3%
parser-opt
	avg: -1.9%	min: -2.1%	max: -1.6%
parser
	avg: -1.9%	min: -2.1%	max: -1.6%
style-servo-check
	avg: -1.3%	min: -2.0%	max: -0.8%
regression-31157-opt
	avg: -0.8%	min: -2.0%	max: 0.0%
piston-image
	avg: -0.7%	min: -1.8%	max: -0.2%
piston-image-opt
	avg: -0.6%	min: -1.8%	max: -0.0%
regression-31157
	avg: -1.0%	min: -1.7%	max: -0.3%
html5ever-opt
	avg: -0.6%	min: -1.5%	max: -0.1%
unify-linearly-opt
	avg: -1.3%	min: -1.5%	max: -1.1%
unify-linearly
	avg: -1.3%	min: -1.4%	max: -1.2%
tokio-webpush-simple-opt
	avg: -0.4%	min: -1.2%	max: -0.0%
helloworld-opt
	avg: -1.0%	min: -1.1%	max: -0.6%
helloworld
	avg: -1.0%	min: -1.1%	max: -0.7%
inflate-opt
	avg: -0.3%	min: -1.1%	max: 0.1%
html5ever-check
	avg: -0.6%	min: -1.0%	max: -0.3%
inflate-check
	avg: -0.3%	min: -1.0%	max: -0.1%
```

</details>
2018-05-03 08:06:08 +00:00
bors
427c548749 Auto merge of #50378 - varkor:repr-align-max-29, r=eddyb
Reduce maximum repr(align(N)) to 2^29

The current maximum `repr(align(N))` alignment is larger than the maximum alignment accepted by LLVM, which can cause issues for huge values of `N`, as seen in #49492. Fixes #49492.

r? @rkruppe
2018-05-03 05:38:11 +00:00
Keith Yeung
4bc48480c0 Skip checking for unused mutable locals that have no name 2018-05-02 21:43:39 -07:00
Michael Lamparski
fbc57a7c7a add missing output for ui test 2018-05-03 00:25:14 -04:00
Nicholas Nethercote
e740b97be6 Always inline simple BytePos and CharPos methods.
Because they are (a) trivial, and (b) super hot.

This change speeds up most rustc-benchmarks, the best by 5%.
2018-05-03 13:25:18 +10:00
Michael Lamparski
cd54b3e448 forbid empty identifiers from concat_idents 2018-05-02 22:58:28 -04:00
bors
9e3cbbb60a Auto merge of #50369 - pftbest:unicode, r=SimonSapin
Fix a warning in libcore on 16bit targets.

This code is assuming that usize >= 32bits, but it is not the case on
16bit targets. It is producing a warning that can fail the compilation
on MSP430 if deny(warnings) is enabled.
It is very unlikely that someone would actually use this code on
a microcontroller, but since unicode was merged into libcore we
have to compile it on 16bit targets.

I've tried to make sure that the code stays the same on x86,
here is an assembly comparison: https://godbolt.org/g/wFw7dZ

r? @SimonSapin
2018-05-03 02:01:04 +00:00
Nicholas Nethercote
7a56360ece Remove parse::escape_default().
str::escape_default() can be used instead.
2018-05-03 10:31:45 +10:00
Nicholas Nethercote
d5d389e4f1 Use escape_default() for strings in LitKind::token().
This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.
2018-05-03 10:31:39 +10:00
Alex Crichton
f6841470f1 Revert "Implement FromStr for PathBuf"
This reverts commit 05a9acc3b8.
2018-05-02 16:39:54 -07:00
Andre Bogus
1cefb5ce31 nano-optimization for memchr::repeat_byte 2018-05-02 23:53:40 +02:00
Sean Griffin
68a1fdfee4 Add a comment explaining unification w/ universes 2018-05-02 15:02:11 -06:00
bors
8a37c75a3a Auto merge of #50355 - petrochenkov:50187, r=oli-obk
Fix an unresolved import issue with enabled `use_extern_macros`

This is a kinda ugly special-purpose solution that will break if we suddenly add a fourth namespace, but I hope to come up with something more general if I get to import resolution refactoring this summer.

Fixes https://github.com/rust-lang/rust/issues/50187 thus removing a blocker for stabilization of `use_extern_macros`
2018-05-02 20:33:31 +00:00
Sean Griffin
4ac9717a1f Fix rebase issues 2018-05-02 11:52:18 -06:00
bors
3eadd75473 Auto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb
Correct initial field alignment for repr(C)/repr(int)

Fixes #50098 following https://github.com/rust-lang/rust/issues/50098#issuecomment-385497333.

(I wasn't sure which kind of test was best suited here — I picked run-pass simply because that was convenient, but if codegen is more appropriate, let me know and I'll change it.)

r? @eddyb
2018-05-02 17:02:25 +00:00
Sean Griffin
04708ba60e track skol levels in the InferCtxt rather than via counter 2018-05-02 08:36:13 -06:00
Sean Griffin
f5d240b432 Wrap InferCtxt::universe in a cell
We'll need this in order to start tracking skolemizatoins here, and it's
easier to update all the field accesses now rather than later.
2018-05-02 08:36:07 -06:00
Sean Griffin
ce64f9d823 Fix rebase issues 2018-05-02 08:28:42 -06:00
Oliver Schneider
bf2a6c3ff9 Allow unaligned reads in constants 2018-05-02 15:48:26 +02:00
Sean Griffin
2f69b798af give a universe to region variables 2018-05-02 07:36:11 -06:00
Sean Griffin
6234a89828 store RegionVariableInfo and not just RegionVariableOrigin 2018-05-02 07:36:11 -06:00
Sean Griffin
360cbf2f48 change skolemizations to use universe index
This is sort of confusing "side step". All it does is to change the
representation of a skolemized region. but the source of that universe
index is not the inference context, which is what we eventually want,
but rather an internal counter in the region inference context.

We'll patch that up later. But doing this now ought to help with
confusing diffs later.
2018-05-02 07:36:10 -06:00
Sean Griffin
e904d56928 add universes to type inference variables
This gives each type inference variable a notion of universe but doesn't
do anything with it. We can always get the "current universe" from
infer_ctxt. This relies on the property of type variables that they can
never interact with siblings.
2018-05-02 07:36:09 -06:00
Sean Griffin
df8f5375a6 introduce UniverseIndex into InferCtxt
Always using root environment for now.
2018-05-02 07:36:08 -06:00
bors
d40a0b3dc1 Auto merge of #49943 - pnkfelix:fix-issue-49918, r=nikomatsakis
Treat generators as if they have an arbitrary destructor

Conservatively assume dropping a generator touches its upvars, via locals' destructors.

Fix #49918
2018-05-02 12:20:31 +00:00
bors
6a87289fa4 Auto merge of #50339 - nnethercote:lazy-Printer-buf, r=michaelwoerister
Extend Printer::buf on demand.

So that 55 entries (at 48 bytes each) don't need to be eagerly
initialized on creation.

This speeds up numerous rust-perf benchmark runs, by up to 3%.
```
crates.io-check
        avg: -2.4%      min: -3.7%      max: -1.1%
encoding-check
        avg: -2.1%      min: -2.9%      max: -1.2%
crates.io-opt
        avg: -1.3%      min: -2.7%      max: -0.1%
crates.io
        avg: -1.4%      min: -2.7%      max: -0.3%
encoding-opt
        avg: -1.1%      min: -2.5%      max: 0.1%
encoding
        avg: -1.3%      min: -2.4%      max: -0.3%
hyper-check
        avg: -1.7%      min: -2.3%      max: -0.9%
regex-check
        avg: -1.5%      min: -1.9%      max: -0.7%
piston-image-check
        avg: -0.9%      min: -1.8%      max: -0.5%
hyper
        avg: -1.0%      min: -1.7%      max: -0.3%
hyper-opt
        avg: -0.9%      min: -1.7%      max: -0.1%
syn-check
        avg: -1.0%      min: -1.5%      max: -0.6%
clap-rs
        avg: -0.3%      min: -1.5%      max: 0.2%
regex-opt
        avg: -0.6%      min: -1.5%      max: -0.0%
regression-31157-check
        avg: -1.1%      min: -1.4%      max: -0.7%
regex
        avg: -0.7%      min: -1.3%      max: -0.1%
clap-rs-check
        avg: -0.5%      min: -1.2%      max: 0.1%
syn-opt
        avg: -0.5%      min: -1.1%      max: -0.1%
syn
        avg: -0.5%      min: -1.1%      max: -0.2%
serde-opt
        avg: -0.3%      min: -1.1%      max: 0.1%
piston-image-opt
        avg: -0.4%      min: -1.1%      max: -0.0%
piston-image
        avg: -0.4%      min: -1.0%      max: -0.0%
```
2018-05-02 10:13:11 +00:00
flip1995
84f4508660
fix tests 2018-05-02 12:05:18 +02:00
flip1995
121abd0599
make it compile again 2018-05-02 12:05:13 +02:00
Seiichi Uchida
24a6284fcd
Fix failures in rustdoc 2018-05-02 11:48:11 +02:00
Seiichi Uchida
0de6544117
Change Attribute::name to return the last segment
And fix some typos
2018-05-02 11:48:11 +02:00
Seiichi Uchida
8ad2d21a9c
Add tool_attributes feature to unstable book 2018-05-02 11:48:11 +02:00
Seiichi Uchida
6c28f84e37
Gate tool_attributes feature 2018-05-02 11:48:11 +02:00
Seiichi Uchida
9b3aea602c
Remove Option from the return type of Attribute::name() 2018-05-02 11:32:34 +02:00
Seiichi Uchida
759bd01e03
Allow Path for name of MetaItem 2018-05-02 11:32:34 +02:00
Seiichi Uchida
e27d20a7ba
Add tests for a new feature 'tool_attributes' 2018-05-02 11:32:33 +02:00
bors
5f3994f58f Auto merge of #50329 - Zoxc:opt-3, r=alexcrichton
Set opt-level to 3

r? @alexcrichton
2018-05-02 07:50:23 +00:00
bors
c1168be536 Auto merge of #50282 - fitzgen:run-more-passes-on-constant-mir, r=nikomatsakis
Run more passes on constant mir

Not very familiar with this code, but everything seems to be working!

r? @eddyb
2018-05-02 05:22:29 +00:00
bors
a2726846f6 Auto merge of #50278 - eddyb:mir-succ-iter, r=nikomatsakis
rustc: return iterators from Terminator(Kind)::successors(_mut).

Minor cleanup (and potentially speedup) prompted by @nnethercote's `SmallVec` experiments.
This PR assumes `.count()` and `.nth(i)` on `iter::Chain<option::IntoIter, slice::Iter(Mut)>` are `O(1)`, but otherwise all of the uses appear to immediately iterate through the successors.

r? @nikomatsakis
2018-05-02 02:10:51 +00:00
bors
5a662bff7a Auto merge of #50379 - nrc:update, r=alexcrichton
Update RLS

r? @alexcrichton

Fixes RLS tests (broken by Cargo update) and enables nightly release
2018-05-01 23:43:32 +00:00
Nick Cameron
6457241133 Update RLS and Rustfmt 2018-05-02 10:20:49 +12:00
bors
96b09e0212 Auto merge of #49982 - petrochenkov:noreex, r=alexcrichton
Remove unstable `macro_reexport`

It's subsumed by `feature(use_extern_macros)` and `pub use`

cc https://github.com/rust-lang/rust/issues/35896
closes https://github.com/rust-lang/rust/issues/29638
closes https://github.com/rust-lang/rust/issues/38951
2018-05-01 21:22:49 +00:00
varkor
cd2f5f7d97 Reduce the maximum alignment to repr(align(1 << 29))
This brings it into line with LLVM's maximum permitted alignment.
2018-05-01 22:02:05 +01:00
varkor
c1607f80b3 Add E0589 to the error index 2018-05-01 22:01:55 +01:00
Felix S. Klock II
f12d7a55fc Update ui/generator tests to reflect changes from new generator drop rules. 2018-05-01 22:28:54 +02:00
Felix S. Klock II
edb8d1c0d4 Conservatively assume dropping a generator touches its upvars, via locals' dtors.
This is meant to address rust-lang/rust#49918.

Review feedback: put back comment justifying skipping interior traversal.

Review feedback: dropck generators like trait objects: all their upvars must
outlive the generator itself, so just create a DtorckConstraint saying so.
2018-05-01 22:28:54 +02:00
varkor
2d0d73ea5a Add a print_types_sizes regression test 2018-05-01 20:25:30 +01:00