Commit Graph

52336 Commits

Author SHA1 Message Date
bors
4c04e36f94 Auto merge of #36651 - jonathandturner:rollup, r=jonathandturner
Rollup of 7 pull requests

- Successful merges: #36330, #36423, #36539, #36571, #36589, #36600, #36632
- Failed merges:
2016-09-22 13:11:04 -07:00
Nick Cameron
3863834d9c reviewer comments and rebasing 2016-09-23 07:19:31 +12:00
Jonathan Turner
c1e39380fb Rollup merge of #36632 - CryZe:patch-3, r=sfackler
Fix outdated Doc Comment on BufReader::seek

A long time ago non-panicking `unwrap` methods were renamed to `into_inner` in this Pull Request: https://github.com/rust-lang/rust/pull/19149

Looks like this doc comment was not updated however.
2016-09-22 11:25:02 -07:00
Jonathan Turner
bc7991a54e Rollup merge of #36600 - caipre:sort-by-key-comment-fix, r=apasel422
Minor correction in `sort_by_key` doc comment

The parameter to `sort_by_key` is named `f`, not `key`.
2016-09-22 11:25:02 -07:00
Jonathan Turner
5d4c0edb69 Rollup merge of #36589 - jpadkins:option_docs_safety_wording_fix, r=bluss
fixed the safety header/wording in option.rs

Fixes #36581

screenshot of the rendered documentation: http://imgur.com/14kLVrA

r? @steveklabnik
2016-09-22 11:25:01 -07:00
Jonathan Turner
a86c83f08a Rollup merge of #36571 - kmcallister:gh-29372-rc-docs, r=GuillaumeGomez
Tweak std::rc docs

Fixes #29372.

r? @GuillaumeGomez
2016-09-22 11:25:01 -07:00
Jonathan Turner
3056630d8f Rollup merge of #36539 - mikhail-m1:36530, r=jonathandturner
fix top level attr spans

issue #36530
?r @jonathandturner
2016-09-22 11:25:01 -07:00
Jonathan Turner
b60fc5d16a Rollup merge of #36423 - GuillaumeGomez:eq_impl, r=pnkfelix
Add missing Eq implementations

Part of #36301.
2016-09-22 11:25:01 -07:00
Jonathan Turner
b474c82add Rollup merge of #36330 - aclarry:e0560-update, r=jonathandturner
Updated E0560 to new error format

Added a small bit of code to add a label for E0560.

Also renamed src/test/compile-fail/E560.rs file to E0560.rs (not sure why it was named E560).
Updated all test cases which check this error.

Closes #36199
2016-09-22 11:25:00 -07:00
Corey Farwell
6b697a375e Implement Debug for DirEntry. 2016-09-22 14:08:03 -04:00
Eduard Burtescu
795b6adc9a Don't let a type parameter named "Self" unchanged past HIR lowering. 2016-09-22 20:03:28 +03:00
bors
458f411213 Auto merge of #36261 - parched:soft-float, r=pnkfelix
Fix documentation with 'soft-float' codegen option

This option doesn't cause software FP routines
to be called, it only changes the float ABI.

Additionally, this option is ignored by all targets,
except the ARM eabihf ones.
2016-09-22 09:50:42 -07:00
mcarton
bfa3433283 Fix compile-fail syntax in error file 2016-09-22 18:32:40 +02:00
bors
a09cb57a73 Auto merge of #36618 - jseyfried:crate_root_attr_invoc, r=nrc
macros: allow attribute invocations at the crate root

Fixes #36617.
r? @nrc
2016-09-22 06:29:23 -07:00
Gianni Ciccarelli
a35275c89b #36553 specialisation error 502 is misleading
this commit correct E0502 error text.
See referenced issue for further info
2016-09-22 12:28:46 +02:00
bors
b2627b080a Auto merge of #36592 - nnethercote:TypedArena, r=bluss
Lazily allocate TypedArena's first chunk

Currently `TypedArena` allocates its first chunk, which is usually 4096
bytes, as soon as it is created. If no allocations are ever made from
the arena then this allocation (and the corresponding deallocation) is
wasted effort.

This commit changes `TypedArena` so it doesn't allocate the first chunk
until the first allocation is made.

This change speeds up rustc by a non-trivial amount because rustc uses
`TypedArena` heavily: compilation speed (producing debug builds) on
several of the rustc-benchmarks increases by 1.02--1.06x. The change
should never cause a slow-down because the hot `alloc` function is
unchanged. It does increase the size of `TypedArena` by one `usize`
field, however.

The commit also fixes some out-of-date comments.
2016-09-22 03:13:50 -07:00
Jeffrey Seyfried
272cf4e61d Refactor no_implicit_prelude: Cell<bool> -> no_implicit_prelude: bool. 2016-09-22 07:45:11 +00:00
Jeffrey Seyfried
85bfd82be6 Avoid reconstructing the BuildReducedGraphVisitor. 2016-09-22 07:18:16 +00:00
Jeffrey Seyfried
a344f14caa Refactor out BuildReducedGraphVisitor::visit_trait_item. 2016-09-22 07:17:23 +00:00
Jeffrey Seyfried
9a0e88a339 Refactor away ParentLink. 2016-09-22 07:13:54 +00:00
bors
6ad10844db Auto merge of #36585 - jonathandturner:misc_error_touchups, r=nrc
Add the ability to merge spans to codemap

This PR adds the ability to merge Spans.  To do so, it builds on the Codemap's ability to verify the locations of spans, namely that following can be verified:

* the expn_id of both spans much match
* the lhs span needs to end on the same line the rhs span begins
* the lhs span must start at or before the rhs span

If all of these are met, a new span is returned that is min(lo), max(hi) of the two spans.

This PR also removes an older Span merge, as this new functionality subsumes it.

r? @nrc
2016-09-21 22:40:51 -07:00
bors
1cf592fa40 Auto merge of #36551 - eddyb:meta-games, r=nikomatsakis
Refactor away RBML from rustc_metadata.

RBML and `ty{en,de}code` have had their long-overdue purge. Summary of changes:
* Metadata is now a tree encoded in post-order and with relative backward references pointing to children nodes. With auto-deriving and type safety, this makes maintenance and adding new information to metadata painless and bug-free by default. It's also more compact and cache-friendly (cache misses should be proportional to the depth of the node being accessed, not the number of siblings as in EBML/RBML).
* Metadata sizes have been reduced, for `libcore` it went down 16% (`8.38MB` -> `7.05MB`) and for `libstd` 14% (`3.53MB` -> `3.03MB`), while encoding more or less the same information
* Specialization is used in the bundled `libserialize` (crates.io `rustc_serialize` remains unaffected) to customize the encoding (and more importantly, decoding) of various types, most notably those interned in the `TyCtxt`. Some of this abuses a soundness hole pending a fix (cc @aturon), but when that fix arrives, we'll move to macros 1.1 `#[derive]` and custom `TyCtxt`-aware serialization traits.
* Enumerating children of modules from other crates is now orthogonal to describing those items via `Def` - this is a step towards bridging crate-local HIR and cross-crate metadata
* `CrateNum` has been moved to `rustc` and both it and `NodeId` are now newtypes instead of `u32` aliases, for specializing their decoding. This is `[syntax-breaking]` (cc @Manishearth ).

cc @rust-lang/compiler
2016-09-21 19:17:24 -07:00
bors
4f9812a59a Auto merge of #36496 - pnkfelix:workaround-issue-34427, r=eddyb
Workaround #34427 by using memset of 0 on ARM to set the discriminant.

Workaround #34427 by using memset of 0 on ARM to set the discriminant.
2016-09-21 15:58:39 -07:00
Jeffrey Seyfried
f4fa62f4f2 Add regression test. 2016-09-21 21:39:41 +00:00
Nick Cameron
6a2d2c9495 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.
2016-09-22 08:47:57 +12:00
Christopher Serr
e107c8b849 Fix outdated Doc Comment on BufReader::seek
A long time ago non-panicking `unwrap` methods were renamed to `into_inner` in this Pull Request: https://github.com/rust-lang/rust/pull/19149

Looks like this doc comment was not updated however.
2016-09-21 21:11:53 +02:00
Keegan McAllister
c316ae56e6 Tweak std::rc docs
Fixes #29372.
2016-09-21 10:25:01 -07:00
bors
53f9730291 Auto merge of #35074 - ashleygwilliams:assert_ne, r=steveklabnik
add debug_assert_ne + assert_ne

~~ work in progress, please do not merge ~~

fixes #35073
2016-09-21 08:12:37 -07:00
Ashley Williams
3d8d55787b add assert_ne and debug_assert_ne macros 2016-09-21 14:38:26 +02:00
Jeffrey Seyfried
4db157af71 Allow attribute macro invocations at the crate root. 2016-09-21 09:24:06 +00:00
bors
5cc6c6b1b7 Auto merge of #36524 - michaelwoerister:trans-inline-only-on-demand, r=nikomatsakis
trans: Only instantiate #[inline] functions in codegen units referencing them

This PR changes how `#[inline]` functions are translated. Before, there was one "master instance" of the function with `external` linkage and a number of on-demand instances with `available_externally` linkage in each codegen unit that referenced the function. This had two downsides:

* Public functions marked with `#[inline]` would be present in machine code of libraries unnecessarily (see #36280 for an example)
* LLVM would crash on `i686-pc-windows-msvc` due to what I suspect to be a bug in LLVM's Win32 exception handling code, because it doesn't like `available_externally` there (#36309).

This PR changes the behavior, so that there is no master instance and only on-demand instances with `internal` linkage. The downside of this is potential code-bloat if LLVM does not completely inline away the `internal` instances because then there'd be N instances of the function instead of 1. However, this can only become a problem when using more than one codegen unit per crate.

cc @rust-lang/compiler
2016-09-21 01:33:37 -07:00
Jonathan Turner
e4b18422ad Check for overlapping and simplify unit test 2016-09-20 15:39:05 -07:00
aclarry
23efc5453d Update E0560 to include label 2016-09-20 16:59:48 -04:00
Eduard Burtescu
4ac30013c3 rustc_trans: don't do on-demand drop glue instantiation. 2016-09-20 20:30:55 +03:00
Eduard Burtescu
a2726f4a54 rustc: allow less and handle fn pointers in the type hashing algorithm. 2016-09-20 20:30:55 +03:00
Eduard Burtescu
ade79d7609 rustc_trans: simplify vtable and symbol handling. 2016-09-20 20:30:52 +03:00
Eduard Burtescu
521d3ea193 rustc_resolve: bring back "struct called like a function" cross-crate. 2016-09-20 20:08:07 +03:00
Eduard Burtescu
564f2ee33c rustc_metadata: don't die with --test because CFG_VERSION is missing. 2016-09-20 20:08:07 +03:00
Eduard Burtescu
a23b8cafec rustc: don't hash the --extern crate name, but the original one, in DefPath. 2016-09-20 20:08:06 +03:00
Eduard Burtescu
221d1a97e5 serialize: allow specifying the default behavior for specializations. 2016-09-20 20:08:06 +03:00
Eduard Burtescu
b01d4891e2 rustc: don't recurse through nested items in decoded HIR fragments. 2016-09-20 20:08:06 +03:00
Eduard Burtescu
f2283a7be0 rustc_metadata: fix for the new ? ambiguity around collect. 2016-09-20 20:08:06 +03:00
Eduard Burtescu
dadbaa48ac rustc_metadata: move opt_item_name to TyCtxt::item_name. 2016-09-20 20:08:06 +03:00
Eduard Burtescu
dc26a23301 rustc_metadata: reduce Lazy{,Seq} overhead by using a relative encoding. 2016-09-20 20:08:05 +03:00
Eduard Burtescu
a96abca2a4 rustc_metadata: replace RBML with a simple and type-safe scheme. 2016-09-20 20:08:05 +03:00
Eduard Burtescu
24aef24e1a rustc_metadata: split the Def description of a DefId from item_children. 2016-09-20 20:08:05 +03:00
Eduard Burtescu
adddfccf2b rustc_metadata: move all encoding/decoding helpers to methods. 2016-09-20 20:08:05 +03:00
Eduard Burtescu
6890354f3b rustc_metadata: use the shorthand encoding for predicates also. 2016-09-20 20:08:04 +03:00
Eduard Burtescu
cc47dc5c6e rustc_metadata: store dense indexes in little-endian instead of big. 2016-09-20 20:08:04 +03:00
Eduard Burtescu
ef4352fba6 rustc_metadata: group information into less tags. 2016-09-20 20:08:04 +03:00
Eduard Burtescu
6742b239ac rustc_metadata: remove all unnecessary tables from astencode. 2016-09-20 20:08:03 +03:00
Eduard Burtescu
d2ea3daad1 rustc_metadata: group the tags into root tags and item tags. 2016-09-20 20:08:03 +03:00
Eduard Burtescu
89736e8671 rustc: remove ImplOrTraitItemId and TraitDef's associated_type_names. 2016-09-20 20:08:03 +03:00
Eduard Burtescu
8734aaa33e rustc_metadata: move more RBML tags to auto-serialization. 2016-09-20 20:08:02 +03:00
Eduard Burtescu
88c5679c4e rustc_metadata: remove ty{en,de}code and move to auto-derived serialization. 2016-09-20 20:08:01 +03:00
Eduard Burtescu
bcbb4107a1 rustc_metadata: side-step ty{en,de}code for everything but Ty. 2016-09-20 20:08:01 +03:00
Eduard Burtescu
0863012fb9 Remove librbml and the RBML-tagged auto-encoder/decoder. 2016-09-20 20:08:01 +03:00
Eduard Burtescu
2ce0e6d4e7 rustc_trans: use the TypeId hashing mechanism instead of metadata. 2016-09-20 20:08:00 +03:00
Eduard Burtescu
02c4155d2c rustc: remove hir::fold. 2016-09-20 20:08:00 +03:00
Eduard Burtescu
ed593bed88 rustc_metadata: go back to not using the opaque format. 2016-09-20 20:08:00 +03:00
Eduard Burtescu
903ec52ba9 rustc: replace uses of NodeId in Def, other than closures and labels. 2016-09-20 20:08:00 +03:00
Eduard Burtescu
fc363cb482 rustc_metadata: go only through rustc_serialize in astencode. 2016-09-20 20:07:54 +03:00
Eduard Burtescu
91e7239db4 rustc_metadata: combine DecodeContext and rbml::reader::Decoder. 2016-09-20 20:07:16 +03:00
mcarton
726c2b6e9b
Don't ICE when a float can't be parsed 2016-09-20 18:25:00 +02:00
Eduard Burtescu
97864d41a6 rustc_metadata: encode miscellaneous information opaquely. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
3cbe4b8bce rustc_metadata: sign-extend when decoding signed integers. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
d47fd9eb5a rustc_metadata: use specialization for {en,de}coding Ty and Substs. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
82197287a2 rustc_metadata: combine EncodeContext and rbml::writer::Encoder. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
7b073343db rustc_metadata: remove astencode tests. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
78ace66b6a rustc_metadata: remove extension traits from astencode. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
87db6b9e65 rustc_metadata: remove redundant lifetimes from astencode::DecodeContext. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
3ad8aa6b87 rbml: move the tagged encoder/decoder to librustc_metadata. 2016-09-20 19:21:33 +03:00
Eduard Burtescu
a79104e0c6 serialize: extend with specialization-based encoding/decoding multi-dispatch. 2016-09-20 19:21:33 +03:00
Nick Platt
429ba7ba9a Minor correction in sort_by_key doc comment 2016-09-20 11:20:33 -04:00
bors
c772948b68 Auto merge of #36388 - pcwalton:copy-propagation, r=nikomatsakis
librustc_mir: Implement def-use chains and trivial copy propagation on MIR.

This only supports trivial cases in which there is exactly one def and
one use.

Currently, some random unrelated MIR tests are failing, probably just because they haven't been updated.

r? @eddyb
2016-09-20 08:01:01 -07:00
Felix S. Klock II
c41a806e4e Workaround #34427 by using memset of 0 on ARM to set the discriminant. 2016-09-20 15:58:46 +02:00
Nicholas Nethercote
80a44779f7 Lazily allocate TypedArena's first chunk.
Currently `TypedArena` allocates its first chunk, which is usually 4096
bytes, as soon as it is created. If no allocations are ever made from
the arena then this allocation (and the corresponding deallocation) is
wasted effort.

This commit changes `TypedArena` so it doesn't allocate the first chunk
until the first allocation is made.

This change speeds up rustc by a non-trivial amount because rustc uses
`TypedArena` heavily: compilation speed (producing debug builds) on
several of the rustc-benchmarks increases by 1.02--1.06x. The change
should never cause a slow-down because the hot `alloc` function is
unchanged. It does increase the size of `TypedArena` by one `usize`
field, however.

The commit also fixes some out-of-date comments.
2016-09-20 22:00:29 +10:00
Patrick Walton
480287ec3b librustc: Implement def-use chains and trivial copy propagation on MIR.
This only supports trivial cases in which there is exactly one def and
one use.
2016-09-19 19:18:38 -07:00
bors
cbd84aeb73 Auto merge of #34942 - porglezomp:master, r=sfackler
Fix overflow checking in unsigned pow()

The pow() method for unsigned integers produced 0 instead of trapping overflow for certain inputs. Calls such as 2u32.pow(1024) produced 0 when they should trap an overflow. This also adds tests for the correctly handling overflow in unsigned pow().

This was previously fixed for signed integers in #28248, but it seems unsigned integers got missed that time.

For issue number #34913
2016-09-19 19:03:52 -07:00
jacobpadkins
8b02aa1c80 fixed the safety header/wording in option.rs 2016-09-19 17:55:44 -05:00
bors
e0547019eb Auto merge of #36102 - GuillaumeGomez:rustc_metadata_diagnostics, r=jonathandturner
Rustc metadata diagnostics

r? @jonathandturner
2016-09-19 13:23:12 -07:00
Jonathan Turner
2ea3ab3a90 Add the ability to merge spans to codemap 2016-09-19 12:31:56 -07:00
Patrick Walton
2e6a91812c librustc: Add a new nop statement to the MIR.
This is useful when passes want to remove statements without affecting
`Location`s.
2016-09-19 11:17:12 -07:00
bors
412a637704 Auto merge of #36471 - nnethercote:rm-to_binop, r=sanxiyn
Remove unused Token::to_binop function

Just some dead code removal.
2016-09-19 08:32:05 -07:00
Guillaume Gomez
313fb8fbf2 Replace 'e.g.' by 'i.e.' 2016-09-19 14:08:57 +02:00
bors
5f6f838448 Auto merge of #36545 - Cobrand:wild-print-fix, r=sfackler
Remove stray println! when invoking error E0316

Removed a wild println! statement that has been here for over a year and a half.

Closes #36543
2016-09-18 21:01:49 -07:00
bors
bfac5d6d9f Auto merge of #36523 - Mark-Simulacrum:format-args-link, r=GuillaumeGomez
Add links between format_args! macro and std::fmt::Arguments struct

r? @GuillaumeGomez
2016-09-18 17:25:01 -07:00
aclarry
af67f0b389 Fix name of error test file 2016-09-18 18:55:19 -04:00
bors
55bf6a4f87 Auto merge of #36487 - nrc:save-doc-urls, r=@eddyb
save-analysis: better 'parent' info

In particular, this fixes some bugs displaying doc URLs for method calls.
2016-09-18 14:00:02 -07:00
Nick Cameron
48e69e029b save-analysis: better 'parent' info
In particular, this fixes some bugs displaying doc URLs for method calls.
2016-09-19 07:17:49 +12:00
bors
33927757ae Auto merge of #36390 - frewsxcv:panic-set-hook, r=GuillaumeGomez
Add basic doc examples for `std::panic::{set_hook, take_hook}`.

None
2016-09-18 10:34:48 -07:00
Corey Farwell
e0d554a883 Add regression test for #9837.
Fixes https://github.com/rust-lang/rust/issues/9837
2016-09-18 13:01:40 -04:00
Eitan Adler
0c252ffbab per timnn 2016-09-18 07:36:02 -07:00
Corey Farwell
5505ebc31d Add basic doc examples for std::panic::{set_hook, take_hook}. 2016-09-18 10:03:34 -04:00
Vanja Cosic
b67a8439f9 Updated "Ownership". Trying to fix #34865
- Reword
- Add link
2016-09-18 14:43:14 +02:00
Guillaume Gomez
b4c739dbdd Add missing Eq implementations 2016-09-18 14:26:49 +02:00
bors
22d15eaca9 Auto merge of #36555 - jseyfried:issue_36540, r=eddyb
Visit and fold macro invocations in the same order

Fixes #36540.
r? @nrc
2016-09-18 04:11:51 -07:00
bors
f39039e6e5 Auto merge of #36527 - nnethercote:last_token_kind, r=jseyfried
Optimize the parser's last token handling.

The parser currently makes a heap copy of the last token in four cases:
identifiers, paths, doc comments, and commas. The identifier and
interpolation cases are unused, and for doc comments and commas we only
need to record their presence, not their value.

This commit consolidates the last token handling and avoids the
unnecessary copies by replacing `last_token`, `last_token_eof`, and
`last_token_interpolated` with a new field `last_token_kind`. This
simplifies the parser slightly and speeds up parsing on some files by
3--4%.
2016-09-18 00:48:51 -07:00
Eitan Adler
fad6a09c94 remove duplicate duplicate words 2016-09-17 23:36:59 -07:00
Eitan Adler
9c3cf06b29 inherit from object 2016-09-17 23:31:06 -07:00