Commit Graph

103424 Commits

Author SHA1 Message Date
bors a0312c156d Auto merge of #66815 - mark-i-m:simplify-borrow_check-errors, r=Dylan-DPC
Reorganize borrow check diagnostic code

Currently borrow checker diagnostics are split across many different modules in different places in the `librustc_mir` crate. This moves them all to a `diagnostics` module. This also reduces the nesting of the modules a bit (sooo much nesting).

I am also thinking of moving stuff out of the `nll` module since we only have one borrow checker now (🎉), and maybe it even makes sense to split out all of this stuff to a `librustc_borrow_check`, but those are for the future. Feel free to ping me here or on zulip and let me know what you think...

cc @nikomatsakis @matthewjasper @eddyb
2019-12-05 14:39:11 +00:00
bors 1e2a73867d Auto merge of #66952 - 0dvictor:print, r=rkruppe
Use Module::print() instead of a PrintModulePass

llvm::Module has a print() method. It is unnecessary to create a pass just for the purpose of printing LLVM IR.
2019-12-05 11:23:26 +00:00
bors d825e35ee8 Auto merge of #66520 - alexcrichton:disable-gdb-wasm, r=eddyb
Disable gdb pretty printer global section on wasm targets

The wasm targets don't support gdb anyway so there's no need for this
section there.
2019-12-05 05:28:48 +00:00
Alex Crichton 5ce09bcfa2 Disable gdb pretty printer global section on wasm targets
The wasm targets don't support gdb anyway so there's no need for this
section there.
2019-12-04 20:15:21 -08:00
bors aeaaf8f640 Auto merge of #67038 - RalfJung:miri, r=RalfJung
update miri

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

r? @ghost
2019-12-04 23:07:13 +00:00
Ralf Jung e550760c03 update miri 2019-12-05 00:00:44 +01:00
bors 6d77e45f01 Auto merge of #66866 - oli-obk:const_fn_memoization, r=RalfJung
Only memoize const fn calls during const eval

Miri and other engines may want to execute the function in order to detect UB inside of them.

r? @RalfJung
2019-12-04 17:48:19 +00:00
Oliver Scherer af8f1416e1
Update src/librustc_mir/interpret/terminator.rs
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-12-04 16:38:58 +01:00
Mark Mansi b998e83064 more private 2019-12-04 09:18:04 -06:00
Mark Mansi d9511a1558 minor fix 2019-12-04 09:18:04 -06:00
Mark Mansi 3c4612a720 fix some imports 2019-12-04 09:18:04 -06:00
Mark Mansi f5ac04ba43 move region errors to diagnostics module 2019-12-04 09:18:04 -06:00
Mark Mansi fbf4731778 fix imports 2019-12-04 09:18:04 -06:00
Mark Mansi 4917bba0e8 move explain_borrow to diagnostics 2019-12-04 09:18:04 -06:00
Mark Mansi 67560976b4 fix imports 2019-12-04 09:18:03 -06:00
Mark Mansi 07a0486228 create new borrow_check::diagnostics module and move stuff there 2019-12-04 09:18:03 -06:00
bors c4f1304935 Auto merge of #66408 - nnethercote:greedy-process_obligations, r=nmatsakis
Make `process_obligations()` greedier.

`process_obligations()` adds new nodes, but it does not process these
new nodes until the next time it is called.

This commit changes it so that it does process these new nodes within
the same call. This change reduces the number of calls to
`process_obligations()` required to complete processing, sometimes
giving significant speed-ups.

The change required some changes to tests.
- The output of `cycle-cache-err-60010.rs` is slightly different.
- The unit tests required extra cases to handle the earlier processing
  of the added nodes. I mostly did these in the simplest possible way,
  by making the added nodes be ignored, thus giving outcomes the same as
  with the old behaviour. But I changed `success_in_grandchildren()`
  more extensively so that some obligations are completed earlier than
  they used to be.

r? @nikomatsakis
2019-12-04 14:33:38 +00:00
bors 7fa046534e Auto merge of #66275 - oli-obk:organize-intrinsics-promotion-checks, r=RalfJung
Organize intrinsics promotion checks

cc @vertexclique

supersedes #61835

r? @RalfJung
2019-12-04 11:22:26 +00:00
bors 5f1d6c4403 Auto merge of #65947 - eddyb:fn-abi, r=oli-obk,nagisa
rustc: split FnAbi's into definitions/direct calls ("of_instance") and indirect calls ("of_fn_ptr").

After this PR:
* `InstanceDef::Virtual` is only used for "direct" virtual calls, and shims around those calls use `InstanceDef::ReifyShim` (i.e. for `<dyn Trait as Trait>::f as fn(_)`)
  * this could easily be done for intrinsics as well, to allow their reification, but I didn't do it
* `FnAbi::of_instance` is **always** used for declaring/defining an `fn`, and for direct calls to an `fn`
  * this is great for e.g. https://github.com/rust-lang/rust/pull/65881 (`#[track_caller]`), which can introduce the "caller location" argument into "codegen signatures" by only changing `FnAbi::of_instance`, after this PR
* `FnAbi::of_fn_ptr` is used primarily for indirect calls, i.e. to `fn` pointers
  * *not* virtual calls (which use `FnAbi::of_instance` with `InstanceDef::Virtual`)
  * there's also a couple uses where the `rustc_codegen_llvm` needs to declare (i.e. FFI-import) an LLVM function that has no Rust declaration available at all
    * at least one of them could probably be a "weak lang item" instead

As there are many steps, this PR is best reviewed commit by commit - some of which arguably should be in their own PRs, I may have gotten carried away a bit.

cc @nagisa @rkruppe @oli-obk @anp
2019-12-04 08:22:05 +00:00
bors a7fc0939ca Auto merge of #66996 - ehuss:update-cargo, r=alexcrichton
Update cargo

11 commits in 750cb1482e4d0e74822cded7ab8b3c677ed8b041..626f0f40efd32e6b3dbade50cd53fdfaa08446ba
2019-11-23 23:06:36 +0000 to 2019-12-03 16:53:04 +0000
- Change some texts to links in README (rust-lang/cargo#7652)
- Update config and environment variable docs. (rust-lang/cargo#7650)
- Stop ignoring .rs.bk files; rustfmt hasn't generated them in years (rust-lang/cargo#7647)
- Various contributing docs updates. (rust-lang/cargo#7642)
- Stabilize profile-overrides. (rust-lang/cargo#7591)
- Update comment about ResolveVersion default version. (rust-lang/cargo#7637)
- Update tests for slight wording change in rustdoc error message. (rust-lang/cargo#7641)
- Remove dep_targets. (rust-lang/cargo#7626)
- vendor: don't use canonical path in .cargo/config (rust-lang/cargo#7629)
- Minor testsuite organization. (rust-lang/cargo#7628)
- Remove failing plugin tests. (rust-lang/cargo#7630)
2019-12-04 05:07:34 +00:00
bors ff143089a8 Auto merge of #66995 - flip1995:clippyup, r=Manishearth
Update Clippy

Fixes #66989

r? @Manishearth @Centril
2019-12-04 01:52:49 +00:00
Oliver Scherer 5cef094a72 Leave fixme 2019-12-04 01:51:26 +01:00
flip1995 5ce98d318d
Update Clippy 2019-12-04 01:37:28 +01:00
bors 2f04472c02 Auto merge of #66925 - RalfJung:miri, r=RalfJung
update Miri

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

r? @ghost
2019-12-03 22:40:44 +00:00
bors 7afe6d9d1f Auto merge of #66997 - Centril:rollup-uraqpgu, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #66750 (Update the `wasi` crate for `wasm32-wasi`)
 - #66878 (Move Sessions into (new) librustc_session)
 - #66903 (parse_enum_item -> parse_enum_variant)
 - #66951 (miri: add throw_machine_stop macro)
 - #66957 (Change Linker for x86_64-fortanix-unknown-sgx target to rust-lld)
 - #66960 ([const-prop] Fix ICE calculating enum discriminant)
 - #66973 (Update the minimum external LLVM to 7)

Failed merges:

r? @ghost
2019-12-03 18:42:43 +00:00
Mazdak Farrokhzad 8dcb5326dd
Rollup merge of #66973 - cuviper:min-llvm7, r=alexcrichton
Update the minimum external LLVM to 7

LLVM 7 is over a year old, which should be plenty for compatibility. The
last LLVM 6 holdout was llvm-emscripten, which went away in #65501.

I've also included a fix for LLVM 8 lacking `MemorySanitizerOptions`,
which was broken by #66522.
2019-12-03 19:41:57 +01:00
Mazdak Farrokhzad ded98853ec
Rollup merge of #66960 - wesleywiser:fix_66787_take2, r=oli-obk,RalfJung
[const-prop] Fix ICE calculating enum discriminant

Fixes #66787

Different approach than #66857

r? @oli-obk
cc @RalfJung @eddyb
2019-12-03 19:41:55 +01:00
Mazdak Farrokhzad 69f1323167
Rollup merge of #66957 - parthsane:pvs/ftx_lld_linker, r=alexcrichton
Change Linker for x86_64-fortanix-unknown-sgx target to rust-lld

Changed linker for `x86_64-fortanix-unknown-sgx` target to `rust-lld`
This change needed the RelaxELFRelocations flag to be set for it to work correctly

r? @jethrogb
2019-12-03 19:41:54 +01:00
Mazdak Farrokhzad 71d1286bdf
Rollup merge of #66951 - RalfJung:miri-machine-stop, r=oli-obk
miri: add throw_machine_stop macro

r? @oli-obk
This helps Miri: https://github.com/rust-lang/miri/pull/1093
2019-12-03 19:41:52 +01:00
Mazdak Farrokhzad d4b623547f
Rollup merge of #66903 - Centril:parse-enum-variant, r=estebank
parse_enum_item -> parse_enum_variant

r? @estebank
2019-12-03 19:41:51 +01:00
Mazdak Farrokhzad b6602d2dd1
Rollup merge of #66878 - Mark-Simulacrum:sess-decouple, r=Centril
Move Sessions into (new) librustc_session

This PR moves `ParseSess` and `Session` from their current locations into a new crate, `librustc_session`.

There are several intents behind this change. librustc is a very large crate, and we want to split it up over time -- this movement removes the sizeable session module from it. It also helps allow for future movement of things not coupled to TyCtxt but coupled to Session out of the crate.

This movement allows allows for a future follow-up PR which unifies Session and ParseSess, allowing for a single source of truth for APIs interested in global options throughout the compiler; the ParseSess is already created directly as a member of Session in the current compiler (i.e., we do not first construct a ParseSess and then move it into Session later in the compilation).

This PR intentionally avoids changing numerous imports throughout the tree to new locations of the moved types; this is needless noise and can be done as needed.

In the process of moving the sessions back, the lint system received an update as well -- notably, early buffered lints are no longer ad-hoc declared as enum pairs and later associated with proper lint declarations. They are still separately handled (buffered), it is a little unclear whether this is truly necessary, but regardless is left for future PRs.

Many of the types moved back are sort of ad-hoc placed into the same crate (librustc_session) instead of creating other crates; it's unclear whether this is actually a good thing, but it seemed better than creating numerous tiny crates which served no purpose on their own.
2019-12-03 19:41:48 +01:00
Mazdak Farrokhzad 1b83dcf2ee
Rollup merge of #66750 - alexcrichton:update-wasi, r=sfackler
Update the `wasi` crate for `wasm32-wasi`

This commit updates the `wasi` crate used by the standard library which
is used to implement most of the functionality of libstd on the
`wasm32-wasi` target. This update comes with a brand new crate structure
in the `wasi` crate which caused quite a few changes for the wasi target
here, but it also comes with a significant change to where the
functionality is coming from.

The WASI specification is organized into "snapshots" and a new snapshot
happened recently, so the WASI APIs themselves have changed since the
previous revision. This had only minor impact on the public facing
surface area of libstd, only changing on `u32` to a `u64` in an unstable
API. The actual source for all of these types and such, however, is now
coming from the `wasi_preview_snapshot1` module instead of the
`wasi_unstable` module like before. This means that any implementors
generating binaries will need to ensure that their embedding environment
handles the `wasi_preview_snapshot1` module.
2019-12-03 19:41:46 +01:00
Eric Huss 8d77653647 Update cargo 2019-12-03 10:22:00 -08:00
Mark Rousskov 68fb218f22 Fix UI tests for new locations 2019-12-03 12:19:17 -05:00
Mark Rousskov 42c4ae0d4b Deduplicate CrateConfig 2019-12-03 12:19:17 -05:00
Mark Rousskov cc2c33a156 Move Session to librustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov 52d4d478a1 Move ParseSess to librustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov 817d1ae834 Move BufferedEarlyLint to librustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov 2731075a6b Duplicate CrateConfig into Session
Since it's just a type alias this isn't too difficult and once Session
is moved back we can make this be the canonical location.
2019-12-03 12:19:16 -05:00
Mark Rousskov e810b7ef5c Remove dead cfg method 2019-12-03 12:19:16 -05:00
Mark Rousskov f2a8aed380 Directly use types from libsyntax::ast 2019-12-03 12:19:16 -05:00
Mark Rousskov 72c67bec09 Re-export Client from rustc_data_structures::jobserver 2019-12-03 12:19:16 -05:00
Mark Rousskov 285144a8de Move NativeLibraryKind to rustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov f03d8f305a Move early lint declarations to librustc_session 2019-12-03 12:19:14 -05:00
Mark Rousskov 526ee51ccc Move Lint to rustc_session
This commit breaks early-lint registration, which will be fixed in the
next commit. This movement will allow essentially all crates in the compiler
tree to declare lints (though not lint passes).
2019-12-03 12:18:32 -05:00
Mark Rousskov 433e546af9 Move Level to rustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov 43516981cb Move duration_to_secs_str to rustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov 984c74a40a Move cgu_reuse_tracker to librustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov c761ec1ac9 Introduce rustc_session crate 2019-12-03 12:18:32 -05:00
Mark Rousskov b7cd58c00e Decouple CguReuseTracker from Session 2019-12-03 12:18:32 -05:00