Commit Graph

58858 Commits

Author SHA1 Message Date
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
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
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
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
bors
49d3fd3b38 Auto merge of #37787 - michaelwoerister:macro-def-ich, r=nikomatsakis
ICH: Handle MacroDef HIR instances.

As of recently, `hir::MacroDef` instances are exported in crate metadata, which means we also store their ICH when doing incremental compilation. Even though exported macro definitions should not (yet) interact with incremental compilation, the ICH is also used for the general purpose crate hash, where macros should be included.

This PR implements ICH computation for `MacroDef`. In theory, the ICH of these MacroDefs is less stable than that of other HIR items, since I opted to just call the compiler-generated `Hash::hash()` for `Token::Interpolated` variants. `Token::Interpolated` contains AST data structures and it would have been a lot of effort to expand ICH computation to the AST too. Since quasi-quoting is rarely used *and* it would only make a difference if incremental compilation was extended to macros, the simpler implementation seemed like a good idea.

This fixes the problem reported in https://github.com/rust-lang/rust/issues/37756. The test still fails because of broken codegen-unit support though.

r? @nikomatsakis
2016-11-18 19:21:47 -08:00
bors
ac635aa95b Auto merge of #37867 - brson:no-lexer-verify, r=alexcrichton
Don't build the lexer verifier during tidy

Tidy is not the right place to do this. Tidy is for running lints.
We should instead be running the lexer/grammar tests as part of the test
suite.

This may fix nightly breakage, but I don't understand why.

https://buildbot.rust-lang.org/builders/nightly-dist-rustc-linux/builds/715/steps/distcheck/logs/stdio

r? @alexcrichton

cc @dns2utf8
2016-11-18 15:04:27 -08:00
Michael Woerister
c722a1eb99 Add span to warning about incr. comp. vs Token::Interpolated. 2016-11-18 16:45:59 -05:00
Michael Woerister
52d250efab Add test case for exported macros vs incremental compilation. 2016-11-18 16:45:59 -05:00
Michael Woerister
e6b30bda49 Remove outdated comment about SVH. 2016-11-18 16:45:59 -05:00
Michael Woerister
a5137afe8c ICH: Hash MacroDefs in a mostly stable way. 2016-11-18 16:45:59 -05:00
Michael Woerister
003b1699c0 Add error message when not finding the ICH of a DepNode. 2016-11-18 16:45:17 -05:00
Brian Anderson
d3b050c308 Don't build the lexer verifier during tidy
Tidy is not the right place to do this. Tidy is for running lints.
We should instead be running the lexer/grammar tests as part of the test
suite.

This may fix nightly breakage, but I don't know why.
2016-11-18 20:37:27 +00:00
bors
b7dfc2bd12 Auto merge of #37776 - nrc:save-double-angle, r=@brson
save-analysis: handle << and >> operators inside [] in types

Fixes #37700
2016-11-18 11:45:53 -08:00
Niko Matsakis
36f2af1999 remove FIXMEs; issue fixed 2016-11-18 13:37:36 -05:00
Dylan McKay
84415ea1f2 [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-18 11:24:19 -05:00
bors
195c42c426 Auto merge of #37749 - keeperofdakeys:should-panic, r=alexcrichton
Improvements to the #[should_panic] feature

Add more error checking for the `#[should_panic]` attribute, and print the expected panic string when it does not match.

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

Eg:
```running 3 tests
test test2 ... ok
test test1 ... FAILED
: Panic did not include expected string 'foo'
test test3 ... FAILED

failures:

---- test1 stdout ----
	thread 'test1' panicked at 'bar', test.rs:7
note: Run with `RUST_BACKTRACE=1` for a backtrace.

---- test3 stdout ----
	thread 'test3' panicked at 'bar', test.rs:18

```
2016-11-18 08:24:00 -08:00
Jake Goulding
acc9efa528 [LLVM 4.0] Update AlwaysInliner pass header and constructor 2016-11-18 11:21:47 -05:00
Niko Matsakis
95c6c9939c improve comments 2016-11-18 10:13:30 -05:00
Niko Matsakis
30b97aa410 add test for adding a field 2016-11-18 10:13:30 -05:00
Niko Matsakis
70a1459143 add test for changing pub inherent method signature 2016-11-18 10:13:30 -05:00
Niko Matsakis
a488979593 add test for changing pub inherent method body
Ideally, callers should not be affected, but they currently are.
2016-11-18 10:13:30 -05:00
Tobias Bucher
d0bb7e1946 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-18 14:45:59 +01:00
bors
2a6d02e092 Auto merge of #37769 - alexcrichton:rustbuild-python, r=brson
rustbuild: Allow configuration of python interpreter

Add a configuration key to `config.toml`, read it from `./configure`, and add
auto-detection if none of those were specified.

Closes #35760
2016-11-18 05:03:03 -08:00
Tim Neumann
fc2216cc1d update Cargo.lock 2016-11-18 11:31:44 +01:00
Josh Driver
fb5ccf80fe Warn when a #[should_panic] test has an unexpected message 2016-11-18 21:01:19 +10:30
Ariel Ben-Yehuda
4fc02f6893 instantiate closures on demand
this should fix compilation with `-C codegen-units=4` - tested locally
with `RUSTFLAGS='-C codegen-units=4' ../x.py test`
2016-11-18 12:25:00 +02:00
bors
01d061fdc0 Auto merge of #37763 - liigo:rustdoc-playground, r=alexcrichton
rustdoc: add cli argument `--playground-url`

Add a new cli argument `--playground-url` for rustdoc:

`rustdoc lib.rs --playground-url="https://play.rust-lang.org/"`

`rustdoc book.md --playground-url="https://play.rust-lang.org/"`

This makes it possible for tools like https://docs.rs to generate crate docs that can submit samples code to run at https://play.rust-lang.org, even if the crate's author *forgot* putting `#![doc(html_playground_url = "https://play.rust-lang.org/")]` to crate root. By the way, I'd like to say, many crate authors are not aware of existing of `#![doc(html_playground_url = "https://play.rust-lang.org/")]`.

`--playground-url` may be reset by `--markdown-playground-url` or `#![doc(html_playground_url=...)]`, so it's backward compatible.

@alexcrichton since you implemented playground-url related features.
2016-11-18 01:47:01 -08:00
Josh Stone
f3240377e6 rustbuild: update the llvm link logic further
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-17 21:50:59 -08:00
bors
509d14fc70 Auto merge of #37846 - jseyfried:fix_proc_macro_dep, r=alexcrichton
Fix bug in proc_macro dependency loading

Fixes #37839.
r? @alexcrichton
2016-11-17 20:56:03 -08:00