Commit Graph

58883 Commits

Author SHA1 Message Date
Nicholas Nethercote
f72685f2ff Use SmallVec for TypeWalker's stack.
The change also adds the missing `SmallVec::truncate` method.
2016-11-22 10:02:04 +11:00
bors
80a95e34fe Auto merge of #37912 - sanxiyn:llvm-compat, r=eddyb
Restore compatibility with LLVM 3.7 and 3.8

This should fix Travis build.
2016-11-21 11:23:04 -06:00
bors
ebec55406b Auto merge of #37824 - jseyfried:symbols, r=eddyb
Clean up `ast::Attribute`, `ast::CrateConfig`, and string interning

This PR
 - removes `ast::Attribute_` (changing `Attribute` from `Spanned<Attribute_>` to a struct),
 - moves a `MetaItem`'s name from the `MetaItemKind` variants to a field of `MetaItem`,
 - avoids needlessly wrapping `ast::MetaItem` with `P`,
 - moves string interning into `syntax::symbol` (`ast::Name` is a reexport of `symbol::Symbol` for now),
 - replaces `InternedString` with `Symbol` in the AST, HIR, and various other places, and
 - refactors `ast::CrateConfig` from a `Vec` to a `HashSet`.

r? @eddyb
2016-11-21 08:08:47 -06:00
Jeffrey Seyfried
a8e86f0f81 Fix fallout in rustdoc and tests. 2016-11-21 12:16:46 +00:00
Seo Sanghyeon
c45f3dee10 Restore compatibility with LLVM 3.7 and 3.8 2016-11-21 20:30:05 +09:00
bors
59b87b3975 Auto merge of #37127 - jseyfried:stabilize_RFC_1560, r=nrc
Stabilize RFC 1560

Fixes #13598, fixes #23157, fixes #32303.
cc #35120
r? @nrc
2016-11-21 04:54:46 -06:00
Jeffrey Seyfried
649bcd409a Fix fallout in tests. 2016-11-21 09:21:54 +00:00
Jeffrey Seyfried
bf41c85c24 Cleanup. 2016-11-21 09:21:48 +00:00
Jeffrey Seyfried
b4d3df6592 Stabilize RFC 1560. 2016-11-21 09:10:16 +00:00
Jeffrey Seyfried
c9935e4a37 Fix incremental compilation hashing. 2016-11-21 09:00:57 +00:00
Jeffrey Seyfried
cc74068642 Remove Rc from the interner. 2016-11-21 09:00:56 +00:00
Jeffrey Seyfried
36c8f6b0d3 Cleanup InternedString. 2016-11-21 09:00:56 +00:00
Jeffrey Seyfried
e85a0d70b8 Use Symbol instead of InternedString in the AST, HIR, and various other places. 2016-11-21 09:00:55 +00:00
bors
b8f6c20657 Auto merge of #37895 - jseyfried:fix_proc_macro_deps, r=nrc
Fix bug involving proc-macro dependencies

Fixes #37893.
r? @nrc
2016-11-21 00:16:51 -06:00
Jeffrey Seyfried
d2f8fb0a0a Move syntax::util::interner -> syntax::symbol, cleanup. 2016-11-20 23:40:20 +00:00
bors
fc2373c5a2 Auto merge of #37888 - bluss:chars-count, r=alexcrichton
Improve .chars().count()

Use a simpler loop to count the `char` of a string: count the
number of non-continuation bytes. Use `count += <conditional>` which the
compiler understands well and can apply loop optimizations to.

benchmark descriptions and results for two configurations:

- ascii: ascii text
- cy: cyrillic text
- jp: japanese text
- words ascii: counting each split_whitespace item from the ascii text
- words jp: counting each split_whitespace item from the jp text

```
x86-64 rustc -Copt-level=3
 name               orig_ ns/iter      cmov_ ns/iter      diff ns/iter   diff %
 count_ascii        1,453 (1755 MB/s)  1,398 (1824 MB/s)           -55   -3.79%
 count_cy           5,990 (856 MB/s)   2,545 (2016 MB/s)        -3,445  -57.51%
 count_jp           3,075 (1169 MB/s)  1,772 (2029 MB/s)        -1,303  -42.37%
 count_words_ascii  4,157 (521 MB/s)   1,797 (1205 MB/s)        -2,360  -56.77%
 count_words_jp     3,337 (1071 MB/s)  1,772 (2018 MB/s)        -1,565  -46.90%

x86-64 rustc -Ctarget-feature=+avx -Copt-level=3
 name               orig_ ns/iter      cmov_ ns/iter      diff ns/iter   diff %
 count_ascii        1,444 (1766 MB/s)  763 (3343 MB/s)            -681  -47.16%
 count_cy           5,871 (874 MB/s)   1,527 (3360 MB/s)        -4,344  -73.99%
 count_jp           2,874 (1251 MB/s)  1,073 (3351 MB/s)        -1,801  -62.67%
 count_words_ascii  4,131 (524 MB/s)   1,871 (1157 MB/s)        -2,260  -54.71%
 count_words_jp     3,253 (1099 MB/s)  1,331 (2686 MB/s)        -1,922  -59.08%
```

I briefly explored a more involved blocked algorithm (looking at 8 or more bytes at a time),
but the code in this PR was always winning `count_words_ascii` in particular (counting
many small strings); this solution is an improvement without tradeoffs.
2016-11-20 17:06:53 -06:00
bors
4bc9290133 Auto merge of #37862 - shepmaster:llvm-4.0-always-set-eh-personality, r=eddyb
[LLVM 4.0] Set EH personality when resuming stack unwinding

To resume stack unwinding, the LLVM `resume` instruction must be used.

In order to use this instruction, the calling function must have an
exception handling personality set.

LLVM 4.0 adds a new IR validation check to ensure a personality is
always set in these cases.

This was introduced in [r277360](https://reviews.llvm.org/rL277360).
2016-11-20 13:50:47 -06:00
bors
fb122199aa Auto merge of #37896 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 8 pull requests

- Successful merges: #37835, #37840, #37841, #37848, #37876, #37880, #37881, #37882
- Failed merges:
2016-11-20 10:36:25 -06:00
Guillaume Gomez
b0354fe873 Rollup merge of #37882 - ollie27:chars_last, r=bluss
Optimise Chars::last()

The default implementation of last() goes through the entire iterator
but that's not needed here.
2016-11-20 15:00:05 +01:00
Guillaume Gomez
be2544c66b Rollup merge of #37881 - ollie27:rustdoc_stab_enum_macro, r=alexcrichton
rustdoc: Remove unnecessary stability versions

For some reason only on enum and macro pages, the stability version is
rendered after the summary unlike all other pages. As it is already
displayed at the top of the page for all items, this removes it for
consistency and to prevent it from overlapping the summary text.

Fixes #36093
2016-11-20 15:00:05 +01:00
Guillaume Gomez
5ca9fa438b Rollup merge of #37880 - GuillaumeGomez:socket-4-doc, r=frewsxcv
Add missing examples in SocketAddr

r? @frewsxcv
2016-11-20 15:00:05 +01:00
Guillaume Gomez
53cead4e8b Rollup merge of #37876 - birkenfeld:patch-1, r=apasel422
reference: fix duplicate bullet points in feature list
2016-11-20 15:00:05 +01:00
Guillaume Gomez
99433f0bfe Rollup merge of #37848 - nnethercote:UnificationTable-probe, r=arielb1
Don't clone in UnificationTable::probe().

This speeds up compilation of rustc-benchmarks/inflate-0.1.0 by 1%.
2016-11-20 15:00:04 +01:00
Guillaume Gomez
e8d38beddf Rollup merge of #37841 - michaelwoerister:ich-loop-tests, r=nikomatsakis
ICH: Add regression tests for various kinds of loops.

r? @nikomatsakis
2016-11-20 15:00:04 +01:00
Guillaume Gomez
fd0c7a9997 Rollup merge of #37840 - brcooley:patch-1, r=steveklabnik
Fix grammar error in lifetimes.md
2016-11-20 15:00:04 +01:00
Guillaume Gomez
e8673ffa75 Rollup merge of #37835 - ojsheikh:E0088, r=jonathandturner
Update E0088 to new error format

Fixes #35226 which is part of #35233. Is based on #36208 from @yossi-k.

r? @jonathandturner
2016-11-20 15:00:04 +01:00
Jeffrey Seyfried
7d0c76aced Add regression test. 2016-11-20 13:48:06 +00:00
Jeffrey Seyfried
95ee919a2d Fix bug in proc-macro dependencies. 2016-11-20 13:48:03 +00:00
bors
8f8944e21a Auto merge of #37861 - shepmaster:llvm-4.0-inline-pass, r=alexcrichton
[LLVM 4.0] Update AlwaysInliner pass header and constructor
2016-11-20 07:26:03 -06:00
Jeffrey Seyfried
f177a00ac9 Refactor P<ast::MetaItem> -> ast::MetaItem. 2016-11-20 12:36:41 +00:00
Jeffrey Seyfried
e97686d048 Move MetaItemKind's Name to a field of MetaItem. 2016-11-20 12:36:30 +00:00
Jeffrey Seyfried
4b9b0d3474 Refactor CrateConfig. 2016-11-20 12:35:57 +00:00
Jeffrey Seyfried
a2626410d7 Refactor MetaItemKind to use Names instead of InternedStrings. 2016-11-20 11:46:06 +00:00
Jeffrey Seyfried
ff4994235a Avoid clearing the string interner. 2016-11-20 11:46:01 +00:00
Jeffrey Seyfried
3ea2bc4e93 Refactor away ast::Attribute_. 2016-11-20 11:46:00 +00:00
bors
224f2cec9c Auto merge of #37855 - tbu-:pr_fix_debug_str, r=alexcrichton
Fix `fmt::Debug` for strings, e.g. for Chinese characters

The problem occured due to lines like

```
3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
```

in `UnicodeData.txt`, which the script previously interpreted as two
characters, although it represents the whole range.

Fixes #34318.
2016-11-20 03:13:58 -06:00
bors
e5ed0a5d78 Auto merge of #37842 - nikomatsakis:incremental-test, r=mw
Add tests for incremental reuse scenarios

These are microbenchmarks checking that we achieve the expected reuse in the scenarios covered by incremental beta.

r? @michaelwoerister
2016-11-19 23:39:25 -06:00
bors
7c535c6ec6 Auto merge of #37833 - sfackler:process-abort, r=alexcrichton
Add std::process::abort

This calls libc abort on Unix and fastfail on Windows, first running
cleanups to do things like flush stdout buffers. This matches with libc
abort's behavior, which flushes open files.

r? @alexcrichton
2016-11-19 20:01:52 -06:00
Oliver Middleton
9e86e18092 Optimise CharIndices::last()
The default implementation of last() goes through the entire iterator
but that's not needed here.
2016-11-20 00:37:48 +00:00
Ulrik Sverdrup
5a3aa2f73c str: Improve .chars().count()
Use a simpler loop to count the `char` of a string: count the
number of non-continuation bytes. Use `count += <conditional>` which the
compiler understands well and can apply loop optimizations to.
2016-11-19 23:46:39 +01:00
bors
0bd2ce62b2 Auto merge of #37831 - rkruppe:llvm-attr-fwdcompat, r=eddyb
[LLVM 4.0] Use llvm::Attribute APIs instead of "raw value" APIs

The latter will be removed in LLVM 4.0 (see 4a6fc8bacf).

The librustc_llvm API remains mostly unchanged, except that llvm::Attribute is no longer a bitflag but represents only a *single* attribute.
The ability to store many attributes in a small number of bits and modify them without interacting with LLVM is only used in rustc_trans::abi and closely related modules, and only attributes for function arguments are considered there.
Thus rustc_trans::abi now has its own bit-packed representation of argument attributes, which are translated to rustc_llvm::Attribute when applying the attributes.

cc #37609
2016-11-19 16:39:25 -06:00
Guillaume Gomez
bf78ef3851 Add missing examples in SocketAddr 2016-11-19 22:22:05 +01:00
bors
bfa709a38a Auto merge of #37826 - keeperofdakeys:proc-macro-test, r=alexcrichton
Show a better error when using --test with #[proc_macro_derive]

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

Currently using `--test` with a crate that contains a `#[proc_macro_derive]` attribute causes an error. This PR doesn't attempt to fix the issue itself, or determine what tesing of a proc_macro_derive crate should be - just to provide a better error message.
2016-11-19 13:28:50 -06:00
Oliver Middleton
de2f61740d Optimise Chars::last()
The default implementation of last() goes through the entire iterator
but that's not needed here.
2016-11-19 18:43:41 +00:00
Oliver Middleton
4dbc44fea1 rustdoc: Remove unnecessary stability versions
For some reason only on enum and macro pages, the stability version is
rendered after the summary unlike all other pages. As it is already
displayed at the top of the page for all items, this removes it for
consistency and to prevent it from overlapping the summary text.
2016-11-19 17:22:33 +00:00
bors
b1da18fe9b Auto merge of #37822 - cuviper:llvm-link-shared, r=alexcrichton
rustbuild: allow dynamically linking LLVM

The makefiles and `mklldeps.py` called `llvm-config --shared-mode` to
find out if LLVM defaulted to shared or static libraries, and just went
with that.  But under rustbuild, `librustc_llvm/build.rs` was assuming
that LLVM should be static, and even forcing `--link-static` for 3.9+.

Now that build script also uses `--shared-mode` to learn the default,
which should work better for pre-3.9 configured for dynamic linking, as
it wasn't possible back then to choose differently via `llvm-config`.

Further, the configure script now has a new `--enable-llvm-link-shared`
option, which allows one to manually override `--link-shared` on 3.9+
instead of forcing static.

Update: There are now four static/shared scenarios that can happen
for the supported LLVM versions:

- 3.9+: By default use `llvm-config --link-static`
- 3.9+ and `--enable-llvm-link-shared`: Use `--link-shared` instead.
- 3.8: Use `llvm-config --shared-mode` and go with its answer.
- 3.7: Just assume static, maintaining the status quo.
2016-11-19 08:08:26 -08:00
bors
fb025b483a Auto merge of #37814 - japaric:aapcs, r=alexcrichton
fix `extern "aapcs" fn`

to actually use the AAPCS calling convention

closes #37810

This is technically a [breaking-change] because it changes the ABI of
`extern "aapcs"` functions that (a) involve `f32`/`f64` arguments/return
values and (b) are compiled for arm-eabihf targets from
"aapcs-vfp" (wrong) to "aapcs" (correct).

Appendix:

What these ABIs mean?

- In the "aapcs-vfp" ABI or "hard float" calling convention: Floating
point values are passed/returned through FPU registers (s0, s1, d0, etc.)

- Whereas, in the "aapcs" ABI or "soft float" calling convention:
Floating point values are passed/returned through general purpose
registers (r0, r1, etc.)

Mixing these ABIs can cause problems if the caller assumes that the
routine is using one of these ABIs but it's actually using the other
one.

---

r? @alexcrichton We are going this `extern "aapcs" fn` thing to implement some intrinsics (floatundidf) for the eabihf targets in order to comply with LLVM's calling convention of intrinsics.

Oh, and the value of the enum came from [here](http://llvm.org/docs/doxygen/html/namespacellvm_1_1CallingConv.html).

cc @TimNN @parched
2016-11-19 04:58:48 -08:00
Georg Brandl
4ccc0628af reference: fix duplicate bullet points in feature list 2016-11-19 13:57:48 +01:00
bors
aa97dafe01 Auto merge of #37797 - arielb1:inline-closure, r=michaelwoerister
instantiate closures on demand

this should fix compilation with `-C codegen-units=4` - tested locally
with `RUSTFLAGS='-C codegen-units=4' ../x.py test`

r? @michaelwoerister
2016-11-19 01:49:07 -08:00
bors
2f4368ba97 Auto merge of #37853 - TimNN:fix-travis, r=alexcrichton
fix travis: update Cargo.lock
2016-11-18 22:39:08 -08:00