Commit Graph

57167 Commits

Author SHA1 Message Date
Jonas Schievink
e75feea696 Fix off-by-one when emitting StorageDead for vars 2016-09-26 22:30:56 +02:00
Jonas Schievink
393db2d830 [WIP] Move MIR towards a single kind of local 2016-09-26 20:41:54 +02:00
Jonas Schievink
205dac9355 Move "rust-call" tuple spreading out of ArgDecl
If MIR is for a "rust-call" ABI function, the last arg would always
have `spread` set to `true`. Move this flag into `Mir` instead.
2016-09-26 19:42:01 +02:00
bors
3bf4a7ad45 Auto merge of #36734 - nnethercote:fix-HashSet-sizing, r=Aatch
Don't allocate during default HashSet creation.

The following `HashMap` creation functions don't allocate heap storage for elements.
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This is good, because it's surprisingly common to create a HashMap and never
use it. So that case should be cheap.

However, `HashSet` does not have the same behaviour. The corresponding creation
functions *do* allocate heap storage for the default number of non-zero
elements (which is 32 slots for 29 elements).
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This commit gives `HashSet` the same behaviour as `HashMap`, by simply calling
the corresponding `HashMap` functions (something `HashSet` already does for
`with_capacity` and `with_capacity_and_hasher`). It also reformats one existing
`HashSet` construction to use a consistent single-line format.

This speeds up rustc itself by 1.01--1.04x on most of the non-tiny
rustc-benchmarks.
2016-09-26 04:38:18 -07:00
bors
b786976a15 Auto merge of #36730 - jseyfried:make_macro_rules_invocations_magic, r=nrc
Forbid user-defined macros named "macro_rules"

This is a [breaking-change].
r? @nrc
2016-09-26 01:21:00 -07:00
bors
0a0215ddcd Auto merge of #36652 - giannicic:issue-36553, r=nrc
this commit corrects E0520 error text.
See referenced issue for further info

r? @nrc
2016-09-25 22:03:28 -07:00
Nicholas Nethercote
4eb069c981 Don't allocate during default HashSet creation.
The following `HashMap` creation functions don't allocate heap storage for elements.
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This is good, because it's surprisingly common to create a HashMap and never
use it. So that case should be cheap.

However, `HashSet` does not have the same behaviour. The corresponding creation
functions *do* allocate heap storage for the default number of non-zero
elements (which is 32 slots for 29 elements).
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This commit gives `HashSet` the same behaviour as `HashMap`, by simply calling
the corresponding `HashMap` functions (something `HashSet` already does for
`with_capacity` and `with_capacity_and_hasher`). It also reformats one existing
`HashSet` construction to use a consistent single-line format.

This speeds up rustc itself by 1.01--1.04x on most of the non-tiny
rustc-benchmarks.
2016-09-26 13:05:54 +10:00
bors
9966397b61 Auto merge of #36151 - camlorn:struct_layout_optimization, r=eddyb
refactor to remove trans::adt and make rustc::ty::layout authoritative

I asked on IRC about optimizing struct layout by reordering fields from most-aligned to least-aligned and somehow ended up getting talked into doing this.  The goal here is to make `layout` authoritative and to remove `adt`.  The former has been accomplished by reimplementing `represent_type_uncached` and the latter is in progress.  @eddyb thought I should make the PR now.

My plan is to reserve the actual optimization for a second PR, as this work is useful by itself.
2016-09-25 18:47:00 -07:00
Gianni Ciccarelli
63a58929b9 #36553 specialisation error 520 is misleading
fit string in one line
2016-09-26 03:18:42 +02:00
Jeffrey Seyfried
77958d56bc Forbid user-defined macros named "macro_rules". 2016-09-26 00:22:40 +00:00
Austin Hicks
467454b0d2 Incorporate review comments. 2016-09-25 20:14:34 -04:00
bors
95abee1a68 Auto merge of #36442 - alexcrichton:rustbuild-cross, r=brson
rustbuild: Nicer error for host builds of targets

If a triple is configured only as a target, not a host, then trying to build
that triple with host artifacts would cause a panic. Fail a little nicer
instead.

Closes #36268
2016-09-25 15:30:01 -07:00
bors
5fc14c1a6f Auto merge of #36616 - jseyfried:load_macros_in_resolve, r=nrc
Load macros from `#[macro_use]` extern crates in `resolve`

r? @nrc
2016-09-25 12:14:11 -07:00
bors
49dd95b078 Auto merge of #36564 - vanjacosic:patch-2, r=GuillaumeGomez
Docs: Update to "Ownership" section

Found #34865 while looking for easy docs wins I could contribute with.
2016-09-25 08:08:18 -07:00
bors
2d1d4d1994 Auto merge of #36713 - TimNN:fix-36708, r=arielb1
don't unwrap non-local span

Fixes #36708.
2016-09-25 02:46:18 -07:00
Tim Neumann
47b918d59a fix 36708 2016-09-25 08:50:59 +02:00
bors
d6dc33907a Auto merge of #36709 - Mark-Simulacrum:fix-wsl-tidy, r=Aatch
Skip binary tidy check when on Windows Linux Subsystem

While it's possible that other linux systems will include "Microsoft" in
their /proc/version, this is deemed unlikely, and since this is a tidy
check, will likely be caught by buildbot/travis either way.

Fixes #36706.
2016-09-24 22:20:25 -07:00
Mark-Simulacrum
50dad3f1fd Skip binary tidy check when on Windows Linux Subsystem
While it's possible that other linux systems will include "Microsoft" in
their /proc/version, this is deemed unlikely, and since this is a tidy
check, will likely be caught by buildbot/travis either way.
2016-09-24 21:08:29 -06:00
Austin Hicks
f2f7ace213 Update codegen/link_section.rs. 2016-09-24 21:56:26 -04:00
Austin Hicks
12ff05fc50 Clean up matches that determine integers for specific alignment requirements 2016-09-24 18:21:16 -04:00
Austin Hicks
4038189688 Optimize struct_field_ptr 2016-09-24 18:21:12 -04:00
Austin Hicks
f16068e577 Completely kill represent_type and the adt::Repr type that goes with it. 2016-09-24 18:21:10 -04:00
bors
a0843d7210 Auto merge of #36657 - nnethercote:rm-TypedArena-with_capacity, r=eddyb
[breaking-change] Remove TypedArena::with_capacity

This is a follow-up to #36592.

The function is unused by rustc. Also, it doesn't really follow the
usual meaning of a `with_capacity` function because the first chunk
allocation is now delayed until the first `alloc` call.

This change reduces the size of `TypedArena` by one `usize`.

@eddyb: we discussed this on IRC. Would you like to review it?
2016-09-24 15:17:07 -07:00
Jeffrey Seyfried
b4906a93a0 Load macros from #[macro_use] extern crates in resolve. 2016-09-24 20:22:25 +00:00
bors
05c2fdd64f Auto merge of #36639 - pcwalton:const-prop, r=eddyb
librustc_mir: Propagate constants during copy propagation.

This optimization kicks in a lot when bootstrapping the compiler.

r? @eddyb
2016-09-24 10:48:42 -07:00
Patrick Walton
79cb2dbfac librustc_mir: Propagate constants during copy propagation.
This optimization kicks in a lot when bootstrapping the compiler.
2016-09-24 10:47:33 -07:00
bors
bdad70213b Auto merge of #36685 - brson:rev-string-from, r=sfackler
Revert "implement `From<Vec<char>>` and `From<&'a [char]>` for `String`"

This reverts commit ac73335f2f.

This is a revert of https://github.com/rust-lang/rust/pull/35054, which resulted in at least 7 known regressions, reported [here](https://internals.rust-lang.org/t/regression-report-stable-2016-08-16-vs-beta-2016-09-21/4119) and [here](https://github.com/rust-lang/rust/issues/36352), which will hit stable next week.

I think this breakage was somewhat unanticipated, and we did not realize so many crates were broken until this week, so reverting is the conservative thing to do until we figure out how not to cause so much breakage. I've run crater on the revert and did not find any new breakage from the revert.

Fixes https://github.com/rust-lang/rust/issues/36352

cc @pwoolcoc @rust-lang/libs
2016-09-24 02:03:18 -07:00
bors
41e3aee3cc Auto merge of #36370 - michaelwoerister:incr-comp-metadata-hashes-check, r=nikomatsakis
ICH: Add ability to test the ICH of exported metadata items.

Also adds an example test case for ICH testing.

r? @nikomatsakis
2016-09-23 21:14:53 -07:00
Jeffrey Seyfried
1599461256 Refactor ext::tt::macro_rules::compile to take a ParseSess instead of an ExtCtxt. 2016-09-24 01:06:53 +00:00
bors
5a71fb35fd Auto merge of #36684 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 7 pull requests

- Successful merges: #36018, #36498, #36500, #36559, #36566, #36578, #36664
- Failed merges:
2016-09-23 17:00:28 -07:00
Guillaume Gomez
f342ece6d4 Rollup merge of #36664 - frewsxcv:vec-deque, r=GuillaumeGomez
Minor `VecDeque` doc examples cleanup.

None
2016-09-24 00:15:46 +02:00
Guillaume Gomez
812f908bc0 Rollup merge of #36578 - GuillaumeGomez:fix_typo, r=steveklabnik
Replace 'e.g.' by 'i.e.'

Fixes #36577.

r? @steveklabnik
2016-09-24 00:15:46 +02:00
Guillaume Gomez
9b7c375582 Rollup merge of #36566 - frewsxcv:9837, r=nikomatsakis
Add regression test for #9837.

Fixes https://github.com/rust-lang/rust/issues/9837
2016-09-24 00:15:45 +02:00
Guillaume Gomez
d56b116e63 Rollup merge of #36559 - grimreaper:eax/fix/r1, r=nikomatsakis
Fix a variety of minor issues

CSS:
- use integer values for font-size in CSS
- use correct ordering of @import
- "invisible" isn't a tag - presume its a class
- "border-color" defines the complete border

python:
- use "not" instead of == "[]" for python
- prefer triple quoted docstrings
- prefer static functions where possible
- prefer modern style classes where possible
- remove semicolons;

global:
- remove duplicated words words
2016-09-24 00:15:45 +02:00
Guillaume Gomez
677ede2623 Rollup merge of #36500 - orbea:docdir, r=nikomatsakis
This installs documentation not man pages

This fixes the description for docdir in configure, it was my mistake for leaving it as "man pages", oops.
2016-09-24 00:15:45 +02:00
Guillaume Gomez
f17bdb7eec Rollup merge of #36498 - jonathandturner:macro_std_lib, r=nikomatsakis
Fix wording for out-of-crate macro error

This fixes the wording of the note for out-of-crate macro errors to fix https://github.com/rust-lang/rust/issues/36469

The previous wording came from older logic in the PR that was replaced without updating the note.
2016-09-24 00:15:44 +02:00
Guillaume Gomez
f45283b93e Rollup merge of #36018 - durka:patch-28, r=steveklabnik
strengthen doc warning about CString::from_raw

Saw unsound code using this function on IRC.
2016-09-24 00:15:43 +02:00
Michael Woerister
6a2666d5b0 ICH: Add ability to test the ICH of exported metadata items. 2016-09-23 17:23:23 -04:00
bors
ee959a8cbe Auto merge of #36525 - jseyfried:load_crates_in_resolve, r=nikomatsakis
Load extern crates in `resolve`

This PR loads `extern crate`s in `resolve`'s `BuildReducedGraphVistor`.

r? @nikomatsakis
2016-09-23 13:40:45 -07:00
Brian Anderson
2e02803c73 Revert "implement From<Vec<char>> and From<&'a [char]> for String"
This reverts commit ac73335f2f.
2016-09-23 17:25:26 +00:00
bors
cb1b1eef8d Auto merge of #36649 - eddyb:selfish-idents, r=pnkfelix
Don't let a type parameter named "Self" unchanged past HIR lowering.

Fixes #36638 by rewriting `Self` type parameters (which are a parse error) to a `gensym("Self")`.

Background: #35605 introduced code across rustc that determines `Self` by its keyword name.
Reverting the sanity checks around that would inadvertently cause confusion between the true `Self` of a `trait` and other type parameters named `Self` (which have caused parse errors already).

I do not like to use `gensym`, and we may do something different here in the future, but this should work.
2016-09-23 09:49:26 -07:00
bors
86a686c4f7 Auto merge of #36335 - mcarton:compiletest, r=GuillaumeGomez
Fix ICE test in compiletest fail-tests

While working on Clippy which uses *compiletest*, I noticed that as long as all expected error are found, *compile-fail* tests will be marked *ok* even if there is an ICE. One function seems to have not been updated with JSON errors because ICEs are now reported like this:
```json
{"message":"../src/librustc/ty/context.rs:161: Attempted to intern `_` which contains inference types/regions in the global type context","code":null,"level":"error: internal compiler error","spans":[],"children":[],"rendered":null}
```
I don't think I can add a test for that.

I guess:
r? @nikomatsakis
2016-09-23 06:17:26 -07:00
Corey Farwell
3b9734437b Minor VecDeque doc examples cleanup. 2016-09-23 09:02:35 -04:00
Jeffrey Seyfried
7b5c59ea65 Load extern crates in resolve. 2016-09-23 06:35:33 +00:00
bors
f2c53ea66b Auto merge of #36631 - frewsxcv:dir-entry-debug, r=sfackler
Implement Debug for DirEntry.

None
2016-09-22 23:12:23 -07:00
bors
533c04dbb3 Auto merge of #36573 - jseyfried:groundwork, r=nrc
resolve: groundwork for building the module graph during expansion

r? @nrc
2016-09-22 19:54:56 -07:00
bors
3a5d975fdc Auto merge of #36154 - nrc:proc-macro-init, r=@jseyfried
Adds a `ProcMacro` form of syntax extension

This commit adds syntax extension forms matching the types for procedural macros 2.0 (RFC #1566), these still require the usual syntax extension boiler plate, but this is a first step towards proper implementation and should be useful for macros 1.1 stuff too.

Supports both attribute-like and function-like macros.

Note that RFC #1566 has not been accepted yet, but I think there is consensus that we want to head in vaguely that direction and so this PR will be useful in any case. It is also fairly easy to undo and does not break any existing programs.

This is related to #35957 in that I hope it can be used in the implementation of macros 1.1, however, there is no direct overlap and is more of a complement than a competing proposal. There is still a fair bit of work to do before the two can be combined.

r? @jseyfried

cc @alexcrichton, @cgswords, @eddyb, @aturon
2016-09-22 16:33:41 -07:00
Jeffrey Seyfried
173d5b339f Split up DefCollector::root(). 2016-09-22 21:14:05 +00:00
Jeffrey Seyfried
1ee64e44a9 Use Resolver::visit_expansion only with monotonic expansions. 2016-09-22 21:14:03 +00:00
Nicholas Nethercote
cf50f5f965 [breaking-change] Remove TypedArena::with_capacity.
The function is unused by rustc. Also, it doesn't really follow the
usual meaning of a `with_capacity` function because the first chunk
allocation is now delayed until the first `alloc` call.

This change reduces the size of `TypedArena` by one `usize`.
2016-09-23 06:40:22 +10:00