103301 Commits

Author SHA1 Message Date
Ralf Jung
1e91e4e20a enable panic-catching tests in Miri 2019-11-22 23:11:56 +01:00
bors
a449535bbc Auto merge of #66640 - Centril:rollup-862009l, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #66183 (*Syntactically* permit visibilities on trait items & enum variants)
 - #66566 (Document pitfall with `impl PartialEq<B> for A`)
 - #66575 (Remove pretty printing of specific nodes in AST)
 - #66587 (Handle statics in MIR as const pointers)
 - #66619 (follow the convention in this file to use third-person singular verbs)
 - #66633 (Error code's long explanation cleanup)
 - #66637 (fix reoccuring typo: dereferencable -> dereferenceable)
 - #66639 (resolve: more declarative `fresh_binding`)

Failed merges:

r? @ghost
2019-11-22 22:03:11 +00:00
Ralf Jung
be079117f0 remove the 'dereferenceable' attribute from Box 2019-11-22 22:04:22 +01:00
Camille GILLOT
9efd3205b5 Fix rebase fallout. 2019-11-22 20:17:22 +01:00
Camille GILLOT
edc5232a4d Retire impl_stable_hash_for. 2019-11-22 20:01:48 +01:00
Camille GILLOT
8c86a79947 Retire impl_stable_hash_for_spanned. 2019-11-22 20:01:47 +01:00
Camille GILLOT
e85c195174 Derives for ast. 2019-11-22 20:01:46 +01:00
Camille GILLOT
31298b41d6 Invert implementations for TokenKind.
Also export a bunch of Token-related impls.
2019-11-22 20:01:45 +01:00
Camille GILLOT
0073d3be97 Export HashStable for DelimSpan, Lit and Path. 2019-11-22 20:01:43 +01:00
Camille GILLOT
3c5ddfdd57 Derive HashStable_Generic for Ident. 2019-11-22 20:01:34 +01:00
Dylan MacKenzie
f9ed2199ff Create promoted MIR fragments in const and statics
The previous strategy of removing `Drop` and `StorageDead` for promoted
locals only worked for rvalue lifetime extension. We now use the same
implementation for promotion across all kinds of items.
2019-11-22 11:01:31 -08:00
Dylan MacKenzie
fcf4bee7d3 Fix tests for RFC 2203 in a const
The previous test was incorrect. `const fn`s are *always* promotable
when inside a `const`, so it should pass. The error was caused by a bug
in `promote_consts`. I've added a failing test outside a `const`
alongside the existing one, which is now run-pass.
2019-11-22 11:01:31 -08:00
Camille GILLOT
bf7c9ba7ce Derive HashStable_Generic for ExpnData. 2019-11-22 19:58:36 +01:00
Mazdak Farrokhzad
56512b9d42
Rollup merge of #66639 - Centril:simplify-fresh-binding, r=petrochenkov
resolve: more declarative `fresh_binding`

Following up on https://github.com/rust-lang/rust/pull/64111, this PR redefines `fresh_binding` wrt. `already_bound_and` and `already_bound_or` in a more declarative and simplified fashion.

cc #54883

r? @petrochenkov
2019-11-22 19:57:55 +01:00
Mazdak Farrokhzad
fd3bd29c18
Rollup merge of #66637 - RalfJung:typo, r=Centril
fix reoccuring typo: dereferencable -> dereferenceable
2019-11-22 19:57:54 +01:00
Mazdak Farrokhzad
8be9e90454
Rollup merge of #66633 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC
Error code's long explanation cleanup

Continuing to clean up the error code's long explanation.

r? @Dylan-DPC
2019-11-22 19:57:52 +01:00
Mazdak Farrokhzad
a699945ead
Rollup merge of #66619 - guanqun:use-third-person-singular-verb, r=Centril
follow the convention in this file to use third-person singular verbs
2019-11-22 19:57:51 +01:00
Mazdak Farrokhzad
3031720d8f
Rollup merge of #66587 - matthewjasper:handle-static-as-const, r=oli-obk
Handle statics in MIR as const pointers

This is the first PR towards the goal of removing `PlaceBase::Static`. In this PR:

* Statics are lowered to dereferencing a const pointer.
* The temporaries holding such pointers are tracked in MIR, for the most part this is only used for diagnostics. There are two exceptions:
    * The borrow checker has some checks for thread-locals that directly use this data.
    * Const checking will suppress "cannot dereference raw pointer" diagnostics for pointers to `static mut`/`extern static`. This is to maintain the current behaviour (12 tests fail otherwise).

The following are left to future PRs (I think that @spastorino will be working on the first 3):

* Applying the same treatments to promoted statics.
* Removing `PlaceBase::Static`.
* Replacing `PlaceBase` with `Local`.
* Moving the ever growing collection of metadata that we have for diagnostics in MIR passes somewhere more appropriate.

r? @oli-obk
2019-11-22 19:57:49 +01:00
Mazdak Farrokhzad
c66b508137
Rollup merge of #66575 - Mark-Simulacrum:no-uii, r=petrochenkov
Remove pretty printing of specific nodes in AST

The ability to print a specific item as identified by NodeId or path
seems not particularly useful, and certainly carries quite a bit of
complexity with it.

This is intended to simplify our CLI parsing a bit and remove a
non-uncomplicated piece of it; I largely did this to remove the
dependency on NodeId from librustc/session but it's not really
necessary to do so in this invasive a way. The alternative is
moving it to librustc_interface or driver, probably.
2019-11-22 19:57:48 +01:00
Mazdak Farrokhzad
afc78e19dd
Rollup merge of #66566 - robamler:issue-66476, r=rkruppe
Document pitfall with `impl PartialEq<B> for A`

Fixes #66476 by turning the violating example into an explicit
counterexample.
2019-11-22 19:57:46 +01:00
Mazdak Farrokhzad
8cba0a9073
Rollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkov
*Syntactically* permit visibilities on trait items & enum variants

Fixes #65041

Suppose we have `$vis trait_item` or `$vis enum_variant` and `$vis` is a `:vis` macro fragment. Before this PR, this would fail to parse. This is now instead allowed as per language team consensus in https://github.com/rust-lang/rust/issues/65041#issuecomment-538105286. (See added tests for elaboration.)

Moreover, we now also permit visibility modifiers on trait items & enum variants *syntactically* but reject them with semantic checks (in `ast_validation`):

```rust
#[cfg(FALSE)]
trait Foo { pub fn bar(); } // OK

#[cfg(FALSE)]
enum E { pub U } // OK
```
2019-11-22 19:57:41 +01:00
Camille GILLOT
640797fdd7 Invert flow in impl HashStable of Span. 2019-11-22 19:56:38 +01:00
Camille GILLOT
1de5fdb5ba Add StableHashingContextLike to HashStable_Generic derive. 2019-11-22 19:56:20 +01:00
Mazdak Farrokhzad
94b7ea97bf resolve: more declarative fresh_binding 2019-11-22 19:33:11 +01:00
Tomasz Miąsko
bf121a33c4 Create sanitizer passes in a separate function 2019-11-22 19:32:45 +01:00
Tomasz Miąsko
5141aa36f6 Retain compatibility with LLVM 6, 7, 8 and 9 2019-11-22 19:32:45 +01:00
Tomasz Miąsko
0812eebc4a Add support for tracking origins of uninitialized memory 2019-11-22 19:32:45 +01:00
Tomasz Miąsko
9b90703289 Add support for sanitizer recovery 2019-11-22 19:32:45 +01:00
Tomasz Miąsko
317f68ab10 Move sanitizer passes creation from ssa to llvm 2019-11-22 19:31:43 +01:00
Camille GILLOT
3e969e070f Revert "Revert expansion of impl HashStable for Frame."
This reverts commit 579625b9e738e606b91fa315c75ab4909fa090be.
2019-11-22 19:23:08 +01:00
bors
5fa0af2327 Auto merge of #66558 - Aaron1011:update/miri-unwind, r=RalfJung
Bump Miri for panic unwinding support
2019-11-22 18:23:00 +00:00
Guillaume Gomez
a8de11cdd5 small error code explanations improvements 2019-11-22 19:14:09 +01:00
Guillaume Gomez
9bb2e3cd34 Improve E0061 long error explanation 2019-11-22 19:14:09 +01:00
Guillaume Gomez
f798804cd9 Improve E0057 long error explanation 2019-11-22 19:14:09 +01:00
Guillaume Gomez
60d9c2c239 Improve E0023 long error explanation 2019-11-22 19:14:09 +01:00
Guillaume Gomez
ea62c2e5b3 Improve E0015 long error explanation 2019-11-22 19:14:09 +01:00
leo60228
c6bcea965d Test std::env::args in a staticlib on glibc Linux 2019-11-22 12:27:07 -05:00
leo60228
d448ab0cf1 Make std::sys::unix::args::init a no-op on glibc Linux 2019-11-22 12:27:07 -05:00
leo60228
55fe6d8d58 Add documentation to std::env::args[_os] 2019-11-22 12:27:07 -05:00
leo60228
e282b2227f Document ARGV_INIT_ARRAY 2019-11-22 12:27:07 -05:00
leo60228
1ff055d875 Set .init_array priority
I'm not entirely sure *why*, but this fixed a problem I was having.
2019-11-22 12:27:07 -05:00
leo60228
d8b6be9b1f Use .init_array section on glibc 2019-11-22 12:27:07 -05:00
Ralf Jung
9ff91ab2d3 fix reoccuring typo: dereferencable -> dereferenceable 2019-11-22 18:11:28 +01:00
Pietro Albini
90a37bce44
DO NOT MERGE: enable windows try builder 2019-11-22 15:37:36 +01:00
Pietro Albini
ee12992da9
ci: guess some environment variables based on builder name and os
Some environment variables (like DEPLOY or DEPLOY_ALT for dist builders,
or IMAGE on Linux builders) are set on a lot of builders, and whether
they should be present or not can be detected automatically based on the
builder name and the platform.

This commit simplifies the CI configuration by automatically setting
those environment variables.
2019-11-22 15:36:37 +01:00
Pietro Albini
262ce313d0
ci: add support for GitHub Actions in the CI scripts 2019-11-22 15:36:37 +01:00
bors
083b5a0a1b Auto merge of #66460 - cjgillot:hashstable_generic, r=Zoxc
Add a proc-macro to derive HashStable in librustc dependencies

A second proc-macro is added to derive HashStable for crates librustc depends on.
This proc-macro HashStable_Generic (to bikeshed) allows to decouple code and some librustc's boilerplate.

Not everything is migrated, because `Span` and `TokenKind` require to be placed inside librustc.
Types using them stay there too.

Split out of #66279
r? @Zoxc
2019-11-22 13:54:41 +00:00
Aaron Hill
45a9d279e4
Bump Miri for rustup fixes 2019-11-22 08:20:46 -05:00
Michael Woerister
68785d9614 PGO: Add regression test for indirect call promotion. 2019-11-22 13:52:55 +01:00
Michael Woerister
0675d65093 PGO: Add test case for branch weights and function call counts recording. 2019-11-22 12:16:09 +01:00