Commit Graph

110841 Commits

Author SHA1 Message Date
Dylan DPC
61fbc6a394
Rollup merge of #71005 - jonas-schievink:no-place-like-return, r=oli-obk
Reading from the return place is fine

Const eval thinks that reading from local `_0` is UB, but it isn't. `_0` is just a normal local like any other, and codegen handles it that way too. The only special thing is that the `Return` terminator will read from it.

I've hit these errors while working on an NRVO pass that can merge other locals with `_0` in https://github.com/rust-lang/rust/pull/71003.

r? @oli-obk
2020-04-23 15:57:11 +02:00
Oliver Scherer
e4ab4ee020 Update src/librustc_mir/interpret/memory.rs
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-04-23 15:56:26 +02:00
Oliver Scherer
af44cdf04f Disallow statics initializing themselves 2020-04-23 15:55:08 +02:00
Pyfisch
aa0175c98d Stabilize UNICODE_VERSION (feature unicode_version)
The feature will become stable in Rust 1.45.
Noted that the value of UNICODE_VERSION is expected to change.
2020-04-23 14:36:30 +02:00
Guillaume Gomez
c687d0490e Create new rustdoc lint to check for code blocks tags 2020-04-23 14:30:30 +02:00
Oliver Scherer
4cdc31b965 Document our sanity assertion around explicit promotion 2020-04-23 13:21:25 +02:00
Oliver Scherer
119c6365e4 Catch and fix explicit promotions that fail to actually promote 2020-04-23 13:21:25 +02:00
Oliver Scherer
22a53790ed Use ConstCx for validate_candidates 2020-04-23 13:21:25 +02:00
Guillaume Gomez
cffd4b699e Improve E0567 explanation 2020-04-23 13:17:00 +02:00
Oliver Scherer
0bc743ed12 Use ConstCx in the promoted collector 2020-04-23 13:09:58 +02:00
Oliver Scherer
f0f7a59eaa Use ConstCx in more places 2020-04-23 13:07:21 +02:00
Oliver Scherer
6a3fb269ed Rename Item to ConstCx.
This renaming was already done in some modules via import renaming. It's strictly used as a context, and it contains a `TyCtxt`.
2020-04-23 13:06:16 +02:00
Oliver Scherer
a135ced5ce Fix ui test blessing when a test has an empty stderr file after having had content there before the current changes 2020-04-23 13:00:23 +02:00
YI
baac961fb5 fix error code for E0751 2020-04-23 15:46:05 +08:00
bors
66f7a5d92f Auto merge of #71343 - RalfJung:miri, r=RalfJung
update Miri

Fixes https://github.com/rust-lang/rust/issues/71241
r? @ghost Cc @rust-lang/miri
2020-04-23 06:53:19 +00:00
David Cook
c16b6e0faa Add leading 0x to offset in Debug fmt of Pointer 2020-04-23 00:43:27 -05:00
bors
8af87b1126 Auto merge of #71312 - wesleywiser:const_prop_bitset, r=Mark-Simulacrum
[ConstProp] Use a `BitSet<Local>` instead of `IndexVec<Local, bool>`
2020-04-23 03:44:28 +00:00
Dylan MacKenzie
34dfbc3fef Add module docs and restrict visibility 2020-04-22 18:56:23 -07:00
Dylan MacKenzie
59c746030a Use a ref-counted pointer for ownership of the predecessor cache
...instead of a `LockGuard` which means the lock is held for longer than
necessary.
2020-04-22 18:24:20 -07:00
Dylan MacKenzie
740f228b5b Remove predecessors_for
There is no `Arc::map` equivalent to `LockGuard::map`
2020-04-22 18:24:20 -07:00
Mohsen Zohrevandi
7f1372347a Use lib crate type for SGX in fn build_auxiliary 2020-04-22 18:23:40 -07:00
Dylan MacKenzie
b3c26de25e Inline some function docs re-exported in std::ptr 2020-04-22 18:01:26 -07:00
bors
fc145e19d0 Auto merge of #71445 - Dylan-DPC:rollup-31givp1, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71256 (Lint must_use on mem::replace)
 - #71350 (Error code explanation extra check)
 - #71369 (allow wasm32 compilation of librustc_data_structures/profiling.rs)
 - #71400 (proc_macro::is_available())
 - #71440 (Implement `Copy` for `AllocErr`)

Failed merges:

r? @ghost
2020-04-23 00:28:05 +00:00
Esteban Küber
25f8966b5a Sort MultiSpans on creation 2020-04-22 17:15:34 -07:00
Dylan MacKenzie
e97c227dbc Remove outdated reference to interpreter snapshotting 2020-04-22 16:31:14 -07:00
Ralf Jung
9b11c60178 update Miri 2020-04-23 00:12:04 +02:00
Ralf Jung
9ea5eed32b smoke-test for async fn with mir-opt-level=0 2020-04-22 23:34:13 +02:00
Amanieu d'Antras
99de3728f9 Only use read_unaligned in transmute_copy if necessary 2020-04-22 22:22:48 +01:00
Dylan DPC
bb13aab8e5
Rollup merge of #71440 - TimDiekmann:copy-allocerr, r=Amanieu
Implement `Copy` for `AllocErr`

r? @Amanieu
2020-04-22 23:19:25 +02:00
Dylan DPC
0f806534c0
Rollup merge of #71400 - dtolnay:isavailable, r=petrochenkov
proc_macro::is_available()

This PR adds `proc_macro::is_available() -> bool` to determine whether proc_macro has been made accessible to the currently running program.

The proc_macro crate is only intended for use inside the implementation of procedural macros. All the functions in the crate panic if invoked from outside of a procedural macro, such as from a build script or unit test or ordinary Rust binary.

Unfortunately those panics made it impossible for libraries that are designed to support both macro and non-macro use cases (e.g. Syn) to be used from binaries that are compiled with panic=abort. In panic=unwind mode we're able to attempt a proc macro call inside catch_unwind and use libproc_macro's result if it succeeds, otherwise fall back to a non-macro alternative implementation. But in panic=abort there was no way to determine which implementation needs to be used.

r? @eddyb
attn: @petrochenkov @adetaylor
ref: https://github.com/dtolnay/cxx/issues/130
2020-04-22 23:19:24 +02:00
Dylan DPC
16be619c6a
Rollup merge of #71369 - ctaggart:wasm32_profiling, r=ecstatic-morse
allow wasm32 compilation of librustc_data_structures/profiling.rs

I'm trying to use rustfmt from a wasm app. I ran into this compilation problem https://github.com/rust-lang/rustfmt/issues/4132 and after investigating, it looked like just adjusting a few cfg's. I based it on how measureme added support in https://github.com/rust-lang/measureme/pull/43.

My testing on my macbook was just that librustc_data_structures builds now with both:
- cargo build
- cargo build --target wasm32-unknown-unknown
2020-04-22 23:19:22 +02:00
Dylan DPC
d3e24bd457
Rollup merge of #71350 - GuillaumeGomez:error-code-explanation-extra-check, r=oli-obk
Error code explanation extra check

r? @Mark-Simulacrum
2020-04-22 23:19:20 +02:00
Dylan DPC
10e47f5b7b
Rollup merge of #71256 - cuviper:must_use_replace, r=estebank
Lint must_use on mem::replace

This adds a hint on `mem::replace`, "if you don't need the old value,
you can just assign the new value directly". This is in similar spirit
to the `must_use` on `ManuallyDrop::take`.
2020-04-22 23:19:19 +02:00
bors
db9b05aeb5 Auto merge of #71044 - ecstatic-morse:body-predecessor-cache, r=oli-obk
Remove `BodyAndCache`

...returning to the original approach using interior mutability within `Body`. This simplifies the API at the cost of some uncontended mutex locks when the parallel compiler is enabled.

The current API requires you to either have a mutable reference to `Body` (`&mut BodyAndCache`), or to compute the predecessor graph ahead of time by creating a `ReadOnlyBodyAndCache`. This is not a good fit for, e.g., the dataflow framework, which
1. does not mutate the MIR
2. only sometimes needs the predecessor graph (for backward dataflow problems)
2020-04-22 21:08:28 +00:00
Tim Diekmann
e60268076f Add a "by reference" adaptor for AllocRef 2020-04-22 22:51:11 +02:00
Tim Diekmann
863d2d92ba Make AllocErr copyable 2020-04-22 22:40:21 +02:00
Esteban Küber
59c816d58b fix test 2020-04-22 12:42:02 -07:00
Esteban Küber
ad379cd7a6 review comment 2020-04-22 12:12:33 -07:00
Esteban Küber
322b2045f2 Revert old span change 2020-04-22 12:12:33 -07:00
Esteban Küber
1f43fc0209 Tweak wording 2020-04-22 12:12:33 -07:00
Esteban Küber
13c1daeb2f Tweak 'static suggestion code
Fix #71196.
2020-04-22 12:12:33 -07:00
David Tolnay
3bd742ff4e
Add tracking issue for proc_macro_is_available 2020-04-22 11:07:07 -07:00
bors
b2e36e6c2d Auto merge of #71431 - Dylan-DPC:rollup-rvm6tfy, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #71280 (Miri: mplace_access_checked: offer option to force different alignment on place)
 - #71336 (Exhaustively match on `{Statement,Terminator}Kind` during const checking)
 - #71370 (Added detailed error code explanation for issue E0696 in Rust compiler.)
 - #71401 (visit_place_base is just visit_local)

Failed merges:

r? @ghost
2020-04-22 17:52:21 +00:00
Dylan MacKenzie
4e7469eaea Replace multiple calls to predecessors_for
...with a single one to `predecessors`. `predecessors_for` requires
taking the lock/incrementing the `RefCell` once each call.
2020-04-22 09:57:43 -07:00
Dylan MacKenzie
2ff1fc9b81 Add #[inline] declarations 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
8287842eb4 Use Body everywhere 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
64db428967 Don't use * for deref-coercion 2020-04-22 09:57:43 -07:00
Dylan MacKenzie
884ba4f11f Use internal mutability for predecessor cache 2020-04-22 09:57:43 -07:00
Pietro Albini
61831ff7f7
ci: remove duplicated job names on GHA 2020-04-22 18:55:48 +02:00
Pietro Albini
1f106b5527
ci: set a default shell on GHA 2020-04-22 18:53:11 +02:00