Commit Graph

51113 Commits

Author SHA1 Message Date
bors
a888333ea6 Auto merge of #31460 - alexcrichton:supafast-rustc, r=brson
Looking at some profiles of rustc recently, these seemed like two pretty easy wins we could get in terms of performance on the table.
2016-02-14 21:24:45 +00:00
Nick Cameron
4e1a6f6b36 Tests 2016-02-15 09:33:21 +13:00
Nick Cameron
847a0d2150 Some error recovery in the parser 2016-02-15 09:33:21 +13:00
Nick Cameron
ffd2a0b9d7 Add some simple error recovery to the parser and fix tests
Some tests just add the extra errors, others I fix by doing some simple error recovery. I've tried to avoid doing too much in the hope of doing something more principled later.

In general error messages are getting worse at this stage, but I think in the long run they will get better.
2016-02-15 09:30:23 +13:00
Nick Cameron
0ef9c5f585 error correction for missing or mismatched closing brackets 2016-02-15 09:30:23 +13:00
Nick Cameron
36a9f0cff1 refactoring: inline some function in the parser 2016-02-15 09:30:23 +13:00
Alex Crichton
e3b414d861 std: Stop prefixing jemalloc symbols
Now that we properly only link in jemalloc when building executables, we have
far less to worry about in terms of polluting the global namespace with the
`free` and `malloc` symbols on Linux. This commit will primarily allow LLVM to
use jemalloc so the compiler will only be using one allocator overall.

Locally this took compile time for libsyntax from 95 seconds to 89 (a 6%
improvement).
2016-02-14 11:50:40 -08:00
Felix Gruber
3eebec697c doc: fix compiler output
In the Rust code above, the function is called print_sum, so use the
same function name in the error message.
2016-02-14 20:50:12 +01:00
Alex Crichton
cc719d2d7d trans: Don't link whole rlibs to executables
Back in 9bc8e6d14 the linking of rlibs changed to using the `link_whole_rlib`
function. This change, however was only intended to affect dylibs, not
executables. For executables we don't actually want to link entire rlibs because
we want the linker to strip out as much as possible.

This commit adds a conditional to this logic to only link entire rlibs if we're
creating a dylib, and otherwise an executable just links an rlib as usual. A
test is included which will fail to link if this behavior is reverted.
2016-02-14 11:45:59 -08:00
Alex Crichton
12a68e6af3 rustc: Ensure FNV hashing is inlined across crates
Right now the primary hashing algorithm of the compiler isn't actually inlined
across crates, meaning that it may be missing out on some crucial optimizations
in a few places (perhaps unrolling smaller loops, etc).

This commit made the hashing function disappear from a profiled version of the
compiler, but that's likely because it was just inlined elsewhere. When
compiling winapi, however, this decreased compile time from 18.3 to 17.8 seconds
(a 3% improvement).
2016-02-14 11:45:59 -08:00
bors
9b367d9d8b Auto merge of #31630 - pitdicker:read_link, r=alexcrichton 2016-02-14 19:42:42 +00:00
Oliver Middleton
9673ace339 Fix a couple of issues in from_utf8 docs 2016-02-14 18:38:37 +00:00
Jonas Schievink
67aa7b2389 Implement --unpretty mir 2016-02-14 19:23:05 +01:00
bors
58eed9266a Auto merge of #31642 - rkruppe:rm-regex-script, r=alexcrichton
This file was probably forgotten when libregex moved out of tree. The rust-lang-nursery/regex repo has a nigh-identical file in its script/ folder.
2016-02-14 18:00:53 +00:00
Oliver Middleton
bc8495abd8 Fix doc error for Utf8Error 2016-02-14 17:52:05 +00:00
Oliver Middleton
36c00f8107 Fix signed int checked_neg docs 2016-02-14 17:44:22 +00:00
Pierre Krieger
5b224ec94d Fix the asmjs ABI 2016-02-14 17:25:49 +01:00
bors
004c4b4b7d Auto merge of #31651 - eddyb:fix-26978, r=arielb1
Handles `str` being an expression's expected type, which was missing from #20083.
Fixes #26978.
2016-02-14 16:18:48 +00:00
Eduard Burtescu
5d0a68d1d3 Do not expect blocks to have type str. 2016-02-14 15:38:48 +02:00
Steve Klabnik
b499e5a089 Remove incorrect documentation
Fixes #31599
2016-02-14 08:21:32 -05:00
fbergr
310ab5ea74 doc: Remove trailing whitespace 2016-02-14 14:31:20 +02:00
Vadim Petrochenkov
9b40e1e5b3 Rename hir::Pat_ and its variants 2016-02-14 15:25:12 +03:00
bors
f3619ce026 Auto merge of #31626 - mitaa:rdoc-srch-escape, r=alexcrichton
Maybe they should be Markdown rendered instead, though that doesn't really seem to work all that well.

fixes #31059

r? @alexcrichton
2016-02-14 12:13:58 +00:00
Sébastien Marie
3c5f2f71ca polish std::os::*::raw deprecation on openbsd
remove unused import that cause an error at compile-time.
2016-02-14 12:03:46 +01:00
bors
083dc5b12d Auto merge of #31614 - mitaa:rdoc_locitem_extmac, r=alexcrichton
fixes #26606

r? @alexcrichton
2016-02-14 10:10:50 +00:00
Jeffrey Seyfried
81d5d02c37 Rename Module field anonymous_children to module_children, expand it to include both named an anonymous modules, and fix #31644 2016-02-14 09:05:37 +00:00
Jeffrey Seyfried
4af85643b1 Rename Module field children to resolutions 2016-02-14 08:47:55 +00:00
bors
86e6e3235e Auto merge of #31391 - frewsxcv:test, r=alexcrichton
Part of #31185
2016-02-14 08:25:39 +00:00
bors
9d98390765 Auto merge of #31581 - petrochenkov:patrefact, r=Manishearth
cc https://github.com/rust-lang/rust/pull/31487#issuecomment-182945101
plugin-[breaking-change]

The first commit renames `ast::Pat_` to `ast::PatKind` and uses its variants in enum qualified form. I've also taken the opportunity and renamed `PatKind::Region` into `PatKind::Ref`.

The second commit splits `PatKind::Enum` into `PatKind::TupleStruct` and `PatKind::UnitStruct`.
So, pattern kinds now correspond to their struct/variant kinds - `Struct`, `TupleStruct` and `UnitStruct`.
@nikomatsakis @nrc @arielb1 Are you okay with this naming scheme?
An alternative possible naming scheme is `PatKind::StructVariant`, `PatKind::TupleVariant`, `PatKind::UnitVariant` (it's probably closer to the common use, but I like it less).

I intend to apply these changes to HIR later, they should not necessarily go in the same nightly with https://github.com/rust-lang/rust/pull/31487
r? @Manishearth
2016-02-14 06:18:10 +00:00
Corey Farwell
e5e2cdb9e3 Add LLVM ModulePass regression test using run-make.
Part of #31185
2016-02-13 22:04:51 -05:00
bors
09395bbfb0 Auto merge of #31551 - alexcrichton:deprecate-std-os-raw, r=brson
This commit is an implementation of [RFC 1415][rfc] which deprecates all types
in the `std::os::*::raw` modules.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1415-trim-std-os.md

Many of the types in these modules don't actually have a canonical platform
representation, for example the definition of `stat` on 32-bit Linux will change
depending on whether C code is compiled with LFS support or not. Unfortunately
the current types in `std::os::*::raw` are billed as "compatible with C", which
in light of this means it isn't really possible.

To make matters worse, platforms like Android sometimes define these types as
*smaller* than the way they're actually represented in the `stat` structure
itself. This means that when methods like `DirEntry::ino` are called on Android
the result may be truncated as we're tied to returning a `ino_t` type, not the
underlying type.

The commit here incorporates two backwards-compatible components:

* Deprecate all `raw` types that aren't in `std::os::raw`
* Expand the `std::os::*::fs::MetadataExt` trait on all platforms for method
  accessors of all fields. The fields now returned widened types which are the
  same across platforms (consistency across platforms is not required, however,
  it's just convenient).

and two also backwards-incompatible components:

* Change the definition of all `std::os::*::raw` type aliases to
  correspond to the newly widened types that are being returned on each
  platform.
* Change the definition of `std::os::*::raw::stat` on Linux to match the LFS
  definitions rather than the standard ones.

The breaking changes here will specifically break code that assumes that `libc`
and `std` agree on the definition of `std::os::*::raw` types, or that the `std`
types are faithful representations of the types in C. An [audit] has been
performed of crates.io to determine the fallout which was determined two be
minimal, with the two found cases of breakage having been fixed now.

[audit]: https://github.com/rust-lang/rfcs/pull/1415#issuecomment-180645582

---

Ok, so after all that, we're finally able to support LFS on Linux! This commit
then simultaneously starts using `stat64` and friends on Linux to ensure that we
can open >4GB files on 32-bit Linux. Yay!

Closes #28978
Closes #30050
Closes #31549
2016-02-14 02:17:38 +00:00
bors
fae516277b Auto merge of #31643 - Manishearth:rollup, r=Manishearth
- Successful merges: #31535, #31537, #31542, #31559, #31563, #31582, #31584, #31585, #31589, #31607, #31609, #31610, #31612, #31629, #31635, #31637, #31638
- Failed merges:
2016-02-13 23:37:10 +00:00
Manish Goregaokar
b34e625faf Rollup merge of #31638 - rkruppe:rm-tex, r=alexcrichton
This file is unused since #27789
2016-02-14 05:06:36 +05:30
Manish Goregaokar
5c835e9389 Rollup merge of #31637 - rkruppe:ignore-pdb, r=alexcrichton 2016-02-14 05:06:36 +05:30
Manish Goregaokar
97a87ef509 Rollup merge of #31635 - semarie:grep-e, r=alexcrichton
The BSD grep for "basic regex" don't support \| as alternate operator (at least under OpenBSD).

Use multiple -e arguments for expressing alternative. I have checked it under Linux (Debian).
2016-02-14 05:06:36 +05:30
Manish Goregaokar
6d0d6088b4 Rollup merge of #31629 - petevine:master, r=alexcrichton
This PR should make it easier to create a baseline x86 compiler  as well as make cross-compilation possible through a separate set of rlibs.

Plus, a few Linux distributions (e.g. Debian) have voiced interest in having this target available.
2016-02-14 05:06:36 +05:30
Manish Goregaokar
34d95f498c Rollup merge of #31612 - raindev:grammar, r=steveklabnik
I feel sorry for bothering you with such a literally one character changes. If it is counter productive feel free to point it out in the comments, that would be totally understandable. I could try to pack such a changes together in one PR to make them less distractive.

r? @steveklabnik
2016-02-14 05:06:35 +05:30
Manish Goregaokar
8873732585 Rollup merge of #31610 - Manishearth:doc-clarify-txrx, r=steveklabnik
Not everyone knows this convention. We could just rename the variables in the
example, but since this notation is commonly used it's a good opportunity to
introduce it.

r? @steveklabnik
2016-02-14 05:06:35 +05:30
Manish Goregaokar
1407645f17 Rollup merge of #31609 - erickt:nit, r=sfackler 2016-02-14 05:06:35 +05:30
Manish Goregaokar
8a5ec51eff Rollup merge of #31589 - reem:remove-unnecessary-poison-bounds, r=sfackler
None
2016-02-14 05:06:34 +05:30
Manish Goregaokar
f1f6db688b Rollup merge of #31585 - tshepang:over-explanation, r=brson
…o read
2016-02-14 05:06:34 +05:30
Manish Goregaokar
a40f2b6e92 Rollup merge of #31584 - tshepang:shorten, r=steveklabnik 2016-02-14 05:06:34 +05:30
Manish Goregaokar
d5dddb4acd Rollup merge of #31582 - tshepang:missing-words, r=steveklabnik 2016-02-14 05:06:33 +05:30
Manish Goregaokar
1598995766 Rollup merge of #31563 - SDX2000:docfixes1, r=steveklabnik
This is a minor change. Please see title. IMO this is important since this is the first instance when we talk about allocating a vector. Not saying that it is allocated on the stack here leaves room for speculation and this might put off some people (they might not even read the later sections which go into more detail about this).
2016-02-14 05:06:33 +05:30
Manish Goregaokar
302e5cb232 Rollup merge of #31559 - scottrobertwhittaker:fix-typo, r=steveklabnik
"destructors" was misspelled.

r? @steveklabnik
2016-02-14 05:06:32 +05:30
Manish Goregaokar
42d17cc7cd Rollup merge of #31542 - nodakai:concat_idents-desc, r=steveklabnik
Just a small documentation change.

It would be great if anyone could check my English.
2016-02-14 05:06:32 +05:30
Manish Goregaokar
1c5c2f548e Rollup merge of #31537 - ollie27:book_doc_example, r=steveklabnik
The code sections shouldn't be inside a ```text block.

r? @steveklabnik
2016-02-14 05:06:32 +05:30
Manish Goregaokar
3c845fe869 Rollup merge of #31535 - Ketsuban:more-detail-in-wrapping-shift-documentation, r=steveklabnik
`wrapping_shl` and `wrapping_shr` are easy to mistake for rotations, when in fact they work somewhat differently. The documentation currently available is a little sparse and easy to misinterpret, so I've added a warning to anyone who bumps into them that the equivalent rotate methods may actually be what they're looking for.

If it's deemed useful to add a symmetrical mention to the documentation for the `rotate_left` and `rotate_right` methods, I can certainly have a go at that, but my gut feeling is that people likely to want a rotate will already know about the wrapping-arithmetic methods, for example from writing CPU simulators.
2016-02-14 05:06:32 +05:30
Alex Crichton
aa23c98450 std: Deprecate all std::os::*::raw types
This commit is an implementation of [RFC 1415][rfc] which deprecates all types
in the `std::os::*::raw` modules.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1415-trim-std-os.md

Many of the types in these modules don't actually have a canonical platform
representation, for example the definition of `stat` on 32-bit Linux will change
depending on whether C code is compiled with LFS support or not. Unfortunately
the current types in `std::os::*::raw` are billed as "compatible with C", which
in light of this means it isn't really possible.

To make matters worse, platforms like Android sometimes define these types as
*smaller* than the way they're actually represented in the `stat` structure
itself. This means that when methods like `DirEntry::ino` are called on Android
the result may be truncated as we're tied to returning a `ino_t` type, not the
underlying type.

The commit here incorporates two backwards-compatible components:

* Deprecate all `raw` types that aren't in `std::os::raw`
* Expand the `std::os::*::fs::MetadataExt` trait on all platforms for method
  accessors of all fields. The fields now returned widened types which are the
  same across platforms (consistency across platforms is not required, however,
  it's just convenient).

and two also backwards-incompatible components:

* Change the definition of all `std::os::*::raw` type aliases to
  correspond to the newly widened types that are being returned on each
  platform.
* Change the definition of `std::os::*::raw::stat` on Linux to match the LFS
  definitions rather than the standard ones.

The breaking changes here will specifically break code that assumes that `libc`
and `std` agree on the definition of `std::os::*::raw` types, or that the `std`
types are faithful representations of the types in C. An [audit] has been
performed of crates.io to determine the fallout which was determined two be
minimal, with the two found cases of breakage having been fixed now.

[audit]: https://github.com/rust-lang/rfcs/pull/1415#issuecomment-180645582

---

Ok, so after all that, we're finally able to support LFS on Linux! This commit
then simultaneously starts using `stat64` and friends on Linux to ensure that we
can open >4GB files on 32-bit Linux. Yay!

Closes #28978
Closes #30050
Closes #31549
2016-02-13 14:42:55 -08:00
Robin Kruppe
14e8af4100 Remove a regex-related script
This file was probably forgotten when libregex moved out of tree. The rust-lang-nursery/regex repo has a nigh-identical file in its script/ folder.
2016-02-13 23:01:26 +01:00