102078 Commits

Author SHA1 Message Date
Aaron Hill
607339f66a
Fix tidy 2019-11-11 15:14:37 -05:00
Aaron Hill
6eea0ffc65
Add more detailed codegen comment 2019-11-11 15:14:37 -05:00
Aaron Hill
23900770ab
Move to miri.rs and re-export it 2019-11-11 15:14:37 -05:00
Aaron Hill
72b555c160
Some code cleanup 2019-11-11 15:14:36 -05:00
Aaron Hill
c062afe73d
Make doc comment more accurate 2019-11-11 15:14:36 -05:00
Aaron Hill
dac30115dc
Change TODO to FIXME 2019-11-11 15:14:36 -05:00
Aaron Hill
d5c0acac4d
Add comment 2019-11-11 15:14:35 -05:00
Aaron Hill
b06c83c200
Add miri trampoline, fix handling of intrinsic return 2019-11-11 15:14:35 -05:00
Aaron Hill
5553476d49
Use proper intrinsic type 2019-11-11 15:14:35 -05:00
Aaron Hill
848e1d827e
More work on miri_start_panic 2019-11-11 15:14:35 -05:00
Aaron Hill
fe88fc03c5
Fix up intrinsic implementation 2019-11-11 15:14:34 -05:00
Aaron Hill
caf3cc1fc8
Add explicit Miri support to libpanic_unwind 2019-11-11 15:14:34 -05:00
Aaron Hill
8ff4d41ba4
Don't attempt to get cwd when printing backtrace under Miri
This allows Miri to print backtraces in isolation mode
2019-11-11 15:14:34 -05:00
Aaron Hill
4f25c91a05
Fix unwinding logic 2019-11-11 15:14:33 -05:00
Aaron Hill
8df4248c71
Some cleanup 2019-11-11 15:14:33 -05:00
Aaron Hill
fe3e1c1cc3
Add doc comment 2019-11-11 15:14:33 -05:00
Aaron Hill
64a43f45d2
A few minor tweaks 2019-11-11 15:14:33 -05:00
Ralf Jung
01c11f9fb5
avoid the loop in unwinding stack popping 2019-11-11 15:14:32 -05:00
Aaron Hill
499eb5d831
More fixes for rustc changes 2019-11-11 15:14:32 -05:00
Aaron Hill
d87e2daccf
Remove old intrinsic check 2019-11-11 15:14:32 -05:00
Aaron Hill
fa4f1b79ec
Fix incorrect unwrap of dest 2019-11-11 15:14:32 -05:00
Aaron Hill
199101822a
Formatting improvements
Co-Authored-By: Oliver Scherer <github35764891676564198441@oli-obk.de>
2019-11-11 15:14:31 -05:00
Aaron Hill
187d05f215
Add hooks for Miri panic unwinding
This commits adds in some additional hooks to allow Miri to properly
handle panic unwinding. None of this should have any impact on CTFE mode
2019-11-11 15:14:31 -05:00
bors
56237d75b4 Auto merge of #66252 - cjgillot:trees, r=oli-obk
Merge repeated definitions

Step forward on #66149

I may need further context to understand the need for a separate crate.

Also, please tell me if you think of other definitions to merge.
2019-11-11 14:05:43 +00:00
bors
9248b019b2 Auto merge of #66213 - tmiasko:mandatory-error-warn, r=petrochenkov
Make error and warning annotations mandatory in UI tests

This change makes error and warning annotations mandatory in UI tests.
The only exception are tests that use error patterns to match compiler
output and don't have any annotations.

Fixes #55596.
2019-11-11 09:40:33 +00:00
bors
2a9be46cc4 Auto merge of #66207 - Manishearth:clippyup, r=Centril
Update clippy

Fixes #66150

r? @ghost
2019-11-11 06:29:15 +00:00
Manish Goregaokar
955f861075 Update clippy 2019-11-11 07:27:46 +01:00
bors
1062b698c1 Auto merge of #66250 - oli-obk:no_fields_in_empty_unions, r=eddyb
Undo an assert causing an ICE until we fix the underlying problem

r? @eddyb

fixes #65462
2019-11-11 02:52:49 +00:00
bors
e2fa9527d4 Auto merge of #66161 - mark-i-m:fix-rustc-guide, r=ehuss
Update rustc-guide

r? @ehuss

fix #66144
2019-11-10 21:55:00 +00:00
Tomasz Miąsko
427952e808 Make error and warning annotations mandatory in UI tests
This change makes error and warning annotations mandatory in UI tests.
The only exception are tests that use error patterns to match compiler
output and don't have any annotations.
2019-11-10 21:01:02 +01:00
Tomasz Miąsko
70b146c2cb Add warning annotations to rustdoc-ui tests 2019-11-10 21:01:02 +01:00
Tomasz Miąsko
267fc6dcf6 Add warning annotations to ignore-stage1 ui-fulldeps tests 2019-11-10 21:00:59 +01:00
bors
3fc30d884a Auto merge of #66070 - petrochenkov:regattr, r=matthewjasper
Support registering inert attributes and attribute tools using crate-level attributes

And remove `#[feature(custom_attribute)]`.
(`rustc_plugin::Registry::register_attribute` is not removed yet, I'll do it in a follow up PR.)

```rust
#![register_attr(my_attr)]
#![register_tool(my_tool)]

#[my_attr] // OK
#[my_tool::anything] // OK
fn main() {}
```

---
Some tools (`rustfmt` and `clippy`) used in tool attributes are hardcoded in the compiler.
We need some way to introduce them without hardcoding as well.

This PR introduces a way to do it with a crate level attribute.
The previous attempt to introduce them through command line (https://github.com/rust-lang/rust/pull/57921) met some resistance.

This probably needs to go through an RFC before stabilization.
However, I'd prefer to land *this* PR without an RFC to able to remove `#[feature(custom_attribute)]` and `Registry::register_attribute` while also providing a replacement.

---
`register_attr` is a direct replacement for `#![feature(custom_attribute)]` (https://github.com/rust-lang/rust/issues/29642), except it doesn't rely on implicit fallback from unresolved attributes to custom attributes (which was always hacky and is the primary reason for the removal of `custom_attribute`) and requires registering the attribute explicitly.
It's not clear whether it should go through stabilization or not.
It's quite possible that all the uses should migrate to `#![register_tool]` (https://github.com/rust-lang/rust/issues/66079) instead.

---

Details:
- The naming is `register_attr`/`register_tool` rather than some `register_attributes` (plural, no abbreviation) for consistency with already existing attributes like `cfg_attr`, or `feature`, etc.
---
Previous attempt: https://github.com/rust-lang/rust/pull/57921
cc https://github.com/rust-lang/rust/issues/44690
Tracking issues: #66079 (`register_tool`), #66080 (`register_attr`)
Closes https://github.com/rust-lang/rust/issues/29642
2019-11-10 15:53:35 +00:00
bors
a3b6e5705c Auto merge of #65324 - Centril:organize-syntax, r=petrochenkov
Split libsyntax apart

In this PR the general idea is to separate the AST, parser, and friends by a more data / logic structure (tho not fully realized!) by separating out the parser and macro expansion code from libsyntax. Specifically have now three crates instead of one (libsyntax):

- libsyntax:

   - concrete syntax tree (`syntax::ast`)

   - definition of tokens and token-streams (`syntax::{token, tokenstream}`) -- used by `syntax::ast`

   - visitors (`syntax::visit`, `syntax::mut_visit`)

   - shared definitions between `libsyntax_expand`

   - feature gating (`syntax::feature_gate`) -- we could possibly move this out to its own crater later.

   - attribute and meta item utilities, including used-marking (`syntax::attr`)

   - pretty printer (`syntax::print`) -- this should possibly be moved out later. For now I've reduced down the dependencies to a single essential one which could be broken via `ParseSess`. This entails that e.g. `Debug` impls for `Path` cannot reference the pretty printer.

   - definition of `ParseSess` (`syntax::sess`) -- this is used by `syntax::{attr, print, feature_gate}` and is a common definition used by the parser and other things like librustc.

   - the `syntax::source_map` -- this includes definitions used by `syntax::ast` and other things but could ostensibly be moved `syntax_pos` since that is more related to this module.

   - a smattering of misc utilities not sufficiently important to itemize -- some of these could be moved to where they are used (often a single place) but I wanted to limit the scope of this PR.

- librustc_parse:

   - parser (`rustc_parse::parser`) -- reading a file and such are defined in the crate root tho.

   - lexer (`rustc_parse::lexer`)

   - validation of meta grammar (post-expansion) in (`rustc_parse::validate_attr`)

- libsyntax_expand -- this defines the infra for macro expansion and conditional compilation but this is not libsyntax_ext; we might want to merge them later but currently libsyntax_expand is depended on by librustc_metadata which libsyntax_ext is not.

   - conditional compilation (`syntax_expand::config`) -- moved from `syntax::config` to here

   - the bulk of this crate is made up of the old `syntax::ext`

r? @estebank
2019-11-10 12:18:53 +00:00
Camille GILLOT
76128f89a1 Fix tidy. 2019-11-10 12:45:31 +01:00
Camille GILLOT
daff3e346c Merge hir::ImplPolarity into ast::ImplPolarity. 2019-11-10 12:40:44 +01:00
Camille GILLOT
738faadc31 Merge hir::IsAuto into ast::IsAuto. 2019-11-10 12:37:12 +01:00
Camille GILLOT
cb233f5420 Merge hir::CaptureClause into ast::CaptureBy. 2019-11-10 12:33:41 +01:00
Camille GILLOT
5b30da10b6 Merge hir::GeneratorMovability into ast::Movability. 2019-11-10 12:31:41 +01:00
Camille GILLOT
f03cbc313d Merge hir::Unsafety into ast::Unsafety. 2019-11-10 12:24:22 +01:00
Camille GILLOT
1f21c080eb Merge hir::Constness into ast::Constness. 2019-11-10 12:21:11 +01:00
Camille GILLOT
ed640c6a27 Merge hir::Mutability into ast::Mutability. 2019-11-10 12:21:05 +01:00
Oliver Scherer
39fb820820 Undo an assert causing an ICE until we fix the problem properly 2019-11-10 11:19:55 +01:00
bors
86c28325ff Auto merge of #66072 - Mark-Simulacrum:next-node-id, r=nikomatsakis
Move next node ID to Resolver

This moves the `next_node_id` method(s) and related tracking information to the resolver. By doing so, we also remove the OneThread and Cell on next_node_id in Session in this move, which means that the new code is simpler and less "interesting" as it doesn't tie itself to a single thread.

This required moving some of the pretty-printing logic around, but this was just copying the code without any semantic changes, so it's just a second commit instead of a separate PR; I can polish it up a bit more if desired.
2019-11-10 07:46:58 +00:00
Mazdak Farrokhzad
4ae2728fa8 move syntax::parse -> librustc_parse
also move MACRO_ARGUMENTS -> librustc_parse
2019-11-10 03:57:18 +01:00
bors
57a5f92bef Auto merge of #66259 - JohnTitor:rollup-x9nk1e2, r=JohnTitor
Rollup of 7 pull requests

Successful merges:

 - #65719 (Refactor sync::Once)
 - #65831 (Don't cast directly from &[T; N] to *const T)
 - #66048 (Correct error in documentation for Ipv4Addr method)
 - #66058 (Correct deprecated `is_global` IPv6 documentation)
 - #66216 ([mir-opt] Handle return place in ConstProp and improve SimplifyLocals pass)
 - #66217 (invalid_value lint: use diagnostic items)
 - #66235 (rustc_metadata: don't let LLVM confuse rmeta blobs for COFF object files.)

Failed merges:

r? @ghost
2019-11-10 02:15:28 +00:00
Mazdak Farrokhzad
be023ebe85 move config.rs to libsyntax_expand 2019-11-10 02:46:17 +01:00
Yuki Okushi
0fec5ab2bb
Rollup merge of #66235 - eddyb:coff-syrup, r=nagisa
rustc_metadata: don't let LLVM confuse rmeta blobs for COFF object files.

This has likely been a silent issue since 1.10 but only caused trouble recently (see https://github.com/rust-lang/rust/issues/65536#issuecomment-552018224), when recent changes to the `rmeta` schema introduced more opportunities for COFF parse errors.

To prevent any undesired interactions with old compilers, I've renamed the file inside `rlib`s from `rust.metadata.bin` to `lib.rmeta` (not strongly attached to it, suggestions welcome).

Fixes #65536.

<hr/>

Before:
```
$ llvm-objdump -all-headers build/*/stage1-std/*/release/deps/libcore-*.rmeta

build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps/libcore-6b9e8b5a59b79a1d.rmeta: file format COFF-<unknown arch>

architecture: unknown
start address: 0x00000000

Sections:
Idx Name          Size     VMA          Type

SYMBOL TABLE:
```

After:
```
$ llvm-objdump -all-headers build/*/stage1-std/*/release/deps/libcore-*.rmeta

llvm-objdump: error: 'build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps/libcore-6b9e8b5a59b79a1d.rmeta':
    The file was not recognized as a valid object file
```
2019-11-10 09:27:20 +09:00
Yuki Okushi
9db3fddfe9
Rollup merge of #66217 - RalfJung:diagnostic-items, r=Centril
invalid_value lint: use diagnostic items

This adjusts the invalid_value lint to use diagnostic items.

@Centril @oli-obk For some reason, this fails to recognize `transmute` -- somehow the diagnostic item is not found. Any idea why?

r? @Centril

Cc https://github.com/rust-lang/rust/issues/66075
2019-11-10 09:27:19 +09:00
Yuki Okushi
f166609433
Rollup merge of #66216 - wesleywiser:const_prop_codegen_improvements, r=oli-obk
[mir-opt] Handle return place in ConstProp and improve SimplifyLocals pass

Temporarily rebased on top of #66074. The top 2 commits are new.

r? @oli-obk
2019-11-10 09:27:17 +09:00