Commit graph

124480 commits

Author SHA1 Message Date
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
Dylan MacKenzie
46154f28bd Move {Free,}RegionRelations and FreeRegionMap out of rustc_middle 2020-04-22 15:54:10 -07:00
Ralf Jung
9b11c60178 update Miri 2020-04-23 00:12:04 +02:00
Josh Stone
22efd95910 Bless From<Cow> UI changes 2020-04-22 14:40:27 -07:00
Ralf Jung
9ea5eed32b smoke-test for async fn with mir-opt-level=0 2020-04-22 23:34:13 +02:00
Mohsen Zohrevandi
db1fbd4a11 Process termination tests
Related issues:
- https://github.com/fortanix/rust-sgx/issues/109
2020-04-22 14:24:20 -07: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
Josh Stone
23f71fe5b5 Add tests from Cow 2020-04-22 14:16:21 -07: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
Josh Stone
6d40751b37 impl From<Cow> for Rc and Arc
These forward `Borrowed`/`Owned` values to existing `From` impls.

    impl<'a, B> From<Cow<'a, B>> for Rc<B>
    where
        B: ToOwned + ?Sized,
        Rc<B>: From<&'a B> + From<B::Owned>,

    impl<'a, B> From<Cow<'a, B>> for Arc<B>
    where
        B: ToOwned + ?Sized,
        Arc<B>: From<&'a B> + From<B::Owned>,
2020-04-22 13:33:42 -07:00
Josh Stone
b0fb57bd8d impl From<Cow> for boxed slices and strings
These forward `Borrowed`/`Owned` values to existing `Box::from` impls.

- `From<Cow<'_, [T]>> for Box<[T]>`
- `From<Cow<'_, str>> for Box<str>`
- `From<Cow<'_, CStr>> for Box<CStr>`
- `From<Cow<'_, OsStr>> for Box<OsStr>`
- `From<Cow<'_, Path>> for Box<Path>`
2020-04-22 13:03:05 -07: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
flip1995
f31502f4bb
Only run (late) internal lints, when they are warn/deny/forbid 2020-04-22 20:51:58 +02:00
flip1995
14f596cb74
Only run cargo lints, when they are warn/deny/forbid 2020-04-22 20:32:37 +02: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
Antoni Boucher
f8f0f7b228 Add help message for missing right operand in condition 2020-04-22 11:57:40 -04:00
bors
1d4dd3d428 Auto merge of #5439 - rokob:lock-await, r=Manishearth
Lint for holding locks across await points

Fixes #4226

This introduces the lint await_holding_lock. For async functions, we iterate
over all types in generator_interior_types and look for types named MutexGuard,
RwLockReadGuard, or RwLockWriteGuard. If we find one then we emit a lint.

changelog: introduce the await_holding_lock lint
2020-04-22 15:50:32 +00:00
Cameron Taggart
51b194f09a remove some extra } 2020-04-22 09:18:54 -06:00
Cameron Taggart
02241db720
suggested rearrangement of the cfg if statements
Co-Authored-By: ecstatic-morse <ecstaticmorse@gmail.com>
2020-04-22 09:12:44 -06:00
Dylan DPC
238e8228d4
Rollup merge of #71401 - spastorino:remove-visit-place-base, r=wesleywiser
visit_place_base is just visit_local

r? @wesleywiser
2020-04-22 16:41:14 +02:00
Dylan DPC
7939a4d728
Rollup merge of #71370 - PankajChaudhary5:ErrorCode-E0696, r=GuillaumeGomez
Added detailed error code explanation for issue E0696 in Rust compiler.

Added proper error explanation for issue E0696 in the Rust compiler.
Error Code E0696

Sub Part of Issue #61137

r? @GuillaumeGomez
2020-04-22 16:41:12 +02:00
Dylan DPC
221f677d70
Rollup merge of #71336 - ecstatic-morse:check-consts-asm, r=oli-obk
Exhaustively match on `{Statement,Terminator}Kind` during const checking

This adds a pre-monomorphization error for inline assembly in a const context as well.

r? @oli-obk
2020-04-22 16:41:11 +02:00
Dylan DPC
e69141a52f
Rollup merge of #71280 - RalfJung:mplace-check-align, r=oli-obk
Miri: mplace_access_checked: offer option to force different alignment on place

Required to solve https://github.com/rust-lang/miri/issues/1339 in https://github.com/rust-lang/miri/pull/1348.

r? @oli-obk
2020-04-22 16:41:09 +02:00
bors
82e90d6426 Auto merge of #71374 - nnethercote:alphabetize-C-and-Z-options, r=petrochenkov
Alphabetize `-C` and `-Z` options

Because it will make it much easier to find options that way.

r? @petrochenkov
2020-04-22 14:39:33 +00:00
Tom Tromey
90b4a97efe Fix compiletest version-parsing tests
The compiletest version-parsing tests failed after the previous patch.
However, I don't believe these tests are correct, in that I don't
think RHEL or CentOS ever put the gdb version number into parentheses.
Instead they display like:

    GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
2020-04-22 08:36:55 -06:00
Pietro Albini
940ce9465f
update openssl-src to 1.1.1g
Fixes CVE-2020-1967.
2020-04-22 16:21:54 +02:00
Tom Tromey
37097fb4f7 Let compiletest recognize gdb 10.x
git gdb has moved to version 10.  My build prints this as its
--version:

    GNU gdb (GDB) 10.0.50.20200420-git

Unfortunately this conflicts with this comment in compiletest:

    // We limit major to 1 digit, otherwise, on openSUSE, we parse the openSUSE version

This patch changes the version parsing to follow the GNU coding
standard, which accounts for both the openSUSE case as well as
handling gdb 10.

My debuginfo test run now says:

NOTE: compiletest thinks it is using GDB with native rust support
NOTE: compiletest thinks it is using GDB version 10000050

... where previously it failed to find that gdb 10 had rust support.
2020-04-22 07:54:33 -06:00
Guillaume Gomez
5cdea2d605 Fix new tidy checks 2020-04-22 15:10:07 +02:00
Guillaume Gomez
5c8f50952b Add checks to ensure that explanations have code examples using the error code and also that 'compile_fail' isn't mispelled 2020-04-22 15:10:07 +02:00
Nicholas Nethercote
6e7ba26bbd Use macros for option tests. 2020-04-22 22:47:05 +10:00