Commit Graph

47764 Commits

Author SHA1 Message Date
Steve Klabnik
e9989d526d Add note about HashMap::capacity's bounds
Fixes #24591
2015-11-04 10:19:54 +01:00
bors
a216e84727 Auto merge of #29217 - nikomatsakis:mir-trans, r=dotdash
This branch implements a variant of trans that is based on MIR. It is very incomplete (intentionally), and had only the goal of laying out enough work to enable more incremental follow-on patches. Currently, only fns tagged with `#[rustc_mir]` use the new trans code. I plan to build up a meta-issue as well that tracks the various "not-yet-implemented" points. The only fn that has been tested so far is this amazingly complex "spike" fn:

```rust
#[rustc_mir]
fn sum(x: i32, y: i32) -> i32 {
    x + y
}
```

In general, the most interesting commit is the last one. There are some points on which I would like feedback from @rust-lang/compiler:

- I did not use `Datum`. Originally, I thought that maybe just a `ValueRef` would be enough but I wound up with two very simple structures, `LvalueRef` and `OperandRef`, that just package up a `ValueRef` and a type. Because of MIR's structure, you don't wind up mixing by-ref and by-value so much, and I tend to think that a thinner abstraction layer is better here, but I'm not sure.
- Related to the above, I expect that sooner or later we will analyze temps (and maybe variables too) to find those whose address is never taken and which are word-sized and which perhaps meet a few other criteria. For those, we'll probably want to avoid the alloca, just because it means prettier code.
- I generally tried to re-use data structures from elsewhere in trans, though I'm sure we can trim these down.
- I didn't do any debuginfo primarily because it seems to want node-ids and we have only spans. I haven't really read into that code so I don't know what's going on there.

r? @nrc
2015-11-04 02:13:05 +00:00
Niko Matsakis
e78786315b remove unused import 2015-11-03 20:38:02 -05:00
bors
c340ea1de5 Auto merge of #29547 - arielb1:speculative-upvar, r=eddyb
`resolve_identifier` used to mark a variable as an upvar when used within a closure. However, the function is also used for the "unnecessary qualification" lint, which would mark paths whose last component had the same name as a local as upvars.

Fixes #29522 

r? @eddyb
2015-11-04 00:30:05 +00:00
Niko Matsakis
b46c0fc497 address nits from dotdash 2015-11-03 18:00:35 -05:00
Niko Matsakis
9c9f4be9df correct typos 2015-11-03 18:00:30 -05:00
Niko Matsakis
6a5b263503 Add (and use) an analysis to determine which temps can forgo an alloca. 2015-11-03 18:00:30 -05:00
bors
708e319f80 Auto merge of #29545 - mystor:vec-deque-test-panic, r=bluss
I think this should fix the test failures in debug mode from #29492

The assertion was written incorrectly, and I don't like the way the new assertion is written, but I _think_ it does the right thing now.
2015-11-03 21:12:03 +00:00
bors
2a7bd082ac Auto merge of #29532 - Ryman:cow_path, r=alexcrichton 2015-11-03 19:29:44 +00:00
Ariel Ben-Yehuda
ca04855a06 resolve: don't speculatively create freevars when resolving
Fixes #29522
2015-11-03 21:08:42 +02:00
Michael Layzell
26db71783f Correct incorrect assertion in VecDeque::wrap_copy 2015-11-03 13:03:36 -05:00
Kevin Butler
f57621535e libcollections: DRY up a PartialEq impl for String 2015-11-03 17:41:42 +00:00
Kevin Butler
cc830ef18b libstd: implement PartialEq<Path> for PathBuf and Cow<Path> 2015-11-03 17:41:42 +00:00
bors
de11d2aa83 Auto merge of #29529 - Ryman:rustdoc-cap-lints, r=alexcrichton
This sets the `cap-lints` setting to 'allow' for all doc compilations. There's precedent for this as rustdoc [already whitelists unstable code](https://github.com/rust-lang/rust/blob/master/src/librustdoc/core.rs#L112) when compiling documentation, with the expectation being that a regular compile will complain about any problems. I think the same justification applies here.

Problem case in the wild: https://github.com/laumann/compiletest-rs/pull/28

r? @Manishearth
2015-11-03 17:02:13 +00:00
bors
4aa1f59e1e Auto merge of #29515 - Manishearth:ice-itembody, r=eddyb
r? @eddyb or @nrc
2015-11-03 15:19:07 +00:00
Manish Goregaokar
6468292c35 Fix ICE with unresolved associated items in closures (fixes #28971) 2015-11-03 20:09:20 +05:30
bors
c143ae7764 Auto merge of #29495 - meqif:fix_unindent_tabs, r=steveklabnik
A line may be indented with either spaces or tabs, but not a mix of both. If there is a mix of tabs and spaces, only the kind that occurs first is counted.

This addresses issue #29268.
2015-11-03 13:34:09 +00:00
bors
f18c905163 Auto merge of #29535 - Toby-S:patch-1, r=steveklabnik
This basically just inlines the fatal! macro from BurntSushi's [blog post](http://blog.burntsushi.net/rust-error-handling/#argument-parsing).

cc @steveklabnik
2015-11-03 11:51:34 +00:00
Toby Scrace
d9df16bf61 Fix #29533
This replaces usage of the (missing) `fatal!` macro with `panic!`.
2015-11-03 11:46:05 +00:00
Niko Matsakis
544b06d455 Add a MIR visitor 2015-11-03 06:34:23 -05:00
Kevin Butler
7690ec89ff libstd: implement From<&Path|PathBuf> for Cow<Path> 2015-11-03 11:25:34 +00:00
bors
5b87225deb Auto merge of #29509 - vadimcn:readme, r=alexcrichton
The current readme provides critical information about gcc versions too late in the flow.

r? @steveklabnik
2015-11-03 10:01:06 +00:00
Niko Matsakis
e84829d51d Plumbing to omit allocas for temps when possible (currently unused) 2015-11-03 04:35:00 -05:00
Niko Matsakis
02017b30eb New trans codepath that builds fn body from MIR instead. 2015-11-03 04:35:00 -05:00
Niko Matsakis
877b93add2 Move shifting code out of expr and into somewhere more accessible 2015-11-03 04:35:00 -05:00
Niko Matsakis
81ff2c2f8e Change adt case handling fn to be less tied to match 2015-11-03 04:35:00 -05:00
Niko Matsakis
0a62158a4e Add helper methods that require tcx; these compute types of
lvalues and operands
2015-11-03 04:35:00 -05:00
Niko Matsakis
044096b3e9 Change Call operands to be, well, Operands 2015-11-03 04:35:00 -05:00
Niko Matsakis
3ab29d3378 Add adt_def into Switch, since it's convenient to have in trans 2015-11-03 04:35:00 -05:00
Niko Matsakis
b5d3580843 Move the "HAIR" code that reads the tcx tables etc out of the tcx
module and into `hair/cx`, now that we don't have a trait defining
the interface
2015-11-03 04:35:00 -05:00
Niko Matsakis
3c07b46118 Pass the mir map to trans 2015-11-03 04:34:59 -05:00
Niko Matsakis
15c1da4e27 Convert from using named fields to always using indices 2015-11-03 04:34:59 -05:00
Niko Matsakis
1e30f3e52b Change ShallowDrop to Free, so that it matches what trans will do 2015-11-03 04:34:59 -05:00
Niko Matsakis
88a9c3e764 Build the MIR using the liberated fn sigs, and track the return type 2015-11-03 04:34:59 -05:00
Niko Matsakis
6d7c66e6e8 Introduce a "liberated fn sigs" map so that we have easy access to this
information when constructing MIR.
2015-11-03 04:34:59 -05:00
bors
eacd35984b Auto merge of #29459 - tshepang:simplify, r=steveklabnik 2015-11-03 08:18:45 +00:00
bors
fffe075708 Auto merge of #29523 - durka:patch-9, r=alexcrichton
`Rc::try_unwrap` and `Rc::make_mut` are stable since 1.4.0, but the example code still has `#![feature(rc_unique)]`. Ideally the stable and beta docs would be updated, but I don't think that's possible :(
2015-11-03 06:34:53 +00:00
bors
3330f54198 Auto merge of #29514 - apasel422:issue-26220, r=alexcrichton
Closes #26220.

r? @alexcrichton
2015-11-03 04:52:12 +00:00
bors
b7fbfb658e Auto merge of #29285 - eefriedman:libsyntax-panic, r=nrc
A set of commits which pushes some panics out of core parser methods, and into users of those parser methods.
2015-11-03 03:06:03 +00:00
bors
749625ad6d Auto merge of #29500 - vadimcn:rustlib, r=alexcrichton
According to a recent [discussion on IRC](https://botbot.me/mozilla/rust-tools/2015-10-27/?msg=52887517&page=2), there's no good reason for Windows builds to store target libraries under `bin`, when on every other platform they are under `lib`.

This might be a [breaking-change] for some users.  I am pretty sure VisualRust has that path hard-coded somewhere.

r? @brson
2015-11-03 01:23:10 +00:00
Kevin Butler
b1ef5302d5 librustdoc: ignore lint warnings when compiling documentation 2015-11-02 23:44:53 +00:00
bors
e2bb53ca52 Auto merge of #29291 - petrochenkov:privacy, r=alexcrichton
The public set is expanded with trait items, impls and their items, foreign items, exported macros, variant fields, i.e. all the missing parts. Now it's a subset of the exported set.
This is needed for https://github.com/rust-lang/rust/pull/29083 because stability annotation pass uses the public set and all things listed above need to be annotated.
Rustdoc can now be migrated to the public set as well, I guess.

Exported set is now slightly more correct with regard to exported items in blocks - 1) blocks in foreign items are considered and 2) publicity is not inherited from the block's parent - if a function is public it doesn't mean structures defined in its body are public.

r? @alexcrichton or maybe someone else
2015-11-02 23:38:49 +00:00
Vadim Petrochenkov
ab7b3456d0 Parens + issue number + typo 2015-11-03 01:58:41 +03:00
bors
a1fd944eb8 Auto merge of #29456 - alexcrichton:path-hash, r=aturon
Almost all operations on Path are based on the components iterator in one form
or another to handle equivalent paths. The `Hash` implementations, however,
mistakenly just went straight to the underlying `OsStr`, causing these
equivalent paths to not get merged together.

This commit updates the `Hash` implementation to also be based on the iterator
which should ensure that if two paths are equal they hash to the same thing.

cc #29008, but doesn't close it
2015-11-02 21:56:47 +00:00
Alex Crichton
d2dd700891 std: Base Hash for Path on its iterator
Almost all operations on Path are based on the components iterator in one form
or another to handle equivalent paths. The `Hash` implementations, however,
mistakenly just went straight to the underlying `OsStr`, causing these
equivalent paths to not get merged together.

This commit updates the `Hash` implementation to also be based on the iterator
which should ensure that if two paths are equal they hash to the same thing.

cc #29008, but doesn't close it
2015-11-02 12:58:54 -08:00
Alex Burka
983349ee99 remove #![feature(rc_unique)] from Rc docs
`Rc::try_unwrap` and `Rc::make_mut` are stable since 1.4.0, but the example code still has `#![feature(rc_unique)]`. Ideally the stable and beta docs would be updated, but I don't think that's possible...
2015-11-02 15:36:22 -05:00
bors
2249b07ae9 Auto merge of #29513 - apasel422:issue-23217, r=alexcrichton
Closes #23217.

r? @alexcrichton
2015-11-02 20:11:53 +00:00
Vadim Chugunov
8cf50bc1fd Merged windows and unix find_libdir() 2015-11-02 11:42:20 -08:00
bors
cf2319bbb6 Auto merge of #29510 - mneumann:dragonfly-guard-page, r=alexcrichton
Only tested on DragonFly.
2015-11-02 18:29:33 +00:00
bors
033e142915 Auto merge of #29518 - KyleMayes:master, r=apasel422
Fixes one of the `expr` examples to be a correct expression

r? @steveklabnik
2015-11-02 14:41:31 +00:00