Commit graph

405 commits

Author SHA1 Message Date
bors
dd67187965 Auto merge of #67133 - oli-obk:it_must_be_a_sign, r=eddyb
Deduplicate pretty printing of constants

r? @eddyb for the pretty printing logic
cc @RalfJung
2020-03-16 16:31:23 +00:00
Oliver Scherer
154f3f19ab Don't print all zsts as their type as it makes no sense for more complex examples (e.g. structs) 2020-03-11 09:10:49 +01:00
Oliver Scherer
b2e93a41a6 Print leading zeros for non pointers 2020-03-11 09:10:49 +01:00
Oliver Scherer
e22ddfd80d Don't print leading zeros on hex dumps constants 2020-03-11 09:10:49 +01:00
Oliver Scherer
02dbb35b2b Deduplicate and clean up pretty printing logic 2020-03-11 09:10:48 +01:00
Dylan MacKenzie
68f20019f7 Ignore mir-opt test when panic=abort 2020-03-10 17:18:16 -07:00
Dylan MacKenzie
8ea5ac60b6 Add mir-opt test for better drop elaboration 2020-03-10 17:18:16 -07:00
Jonas Schievink
bb482ebf28 suspend -> yield 2020-02-16 13:08:36 +01:00
Jonas Schievink
759526e513 Fix printing of Yield terminator 2020-02-16 00:57:48 +01:00
Dylan DPC
2d8f6389d0
Rollup merge of #68524 - jonas-schievink:generator-resume-arguments, r=Zoxc
Generator Resume Arguments

cc https://github.com/rust-lang/rust/issues/43122 and https://github.com/rust-lang/rust/issues/56974

Blockers:
* [x] Fix miscompilation when resume argument is live across a yield point (https://github.com/rust-lang/rust/pull/68524#issuecomment-578459069)
* [x] Fix 10% compile time regression in `await-call-tree` benchmarks (https://github.com/rust-lang/rust/pull/68524#issuecomment-578487162)
  * [x] Fix remaining 1-3% regression (https://github.com/rust-lang/rust/pull/68524#issuecomment-579566255) - resolved (https://github.com/rust-lang/rust/pull/68524#issuecomment-581144901)
* [x] Make dropck rules account for resume arguments (https://github.com/rust-lang/rust/pull/68524#issuecomment-578541137)

Follow-up work:
* Change async/await desugaring to make use of this feature
* Rewrite [`box_region.rs`](3d8778d767/src/librustc_data_structures/box_region.rs) to use resume arguments (this shows up in profiles too)
2020-02-06 22:38:33 +01:00
Matthew Jasper
c7e6f88926 Add more tests for or-patterns 2020-02-03 19:42:15 +00:00
Jonas Schievink
392e59500a Fix miscompilation 2020-02-03 14:08:57 +01:00
Jonas Schievink
aae0f543cf No resume argument in the drop shim 2020-02-02 13:20:58 +01:00
Jonas Schievink
3bb8ecb512 Adjust mir-opt tests to new yield lowering 2020-02-02 13:20:58 +01:00
Matthew Jasper
30058df867 Update existing tests for or-patterns 2020-02-01 22:10:58 +00:00
Oliver Scherer
9a2d5e87d6 Render const pointers in MIR more compactly 2020-01-24 16:20:58 +01:00
Dylan DPC
5d8edc99aa
Rollup merge of #68335 - RalfJung:drop-in-place, r=Mark-Simulacrum
Remove real_drop_in_place

In af9b057156, I added `real_drop_in_place` because Stacked Borrows at the time couldn't handle transmuting of mutable references to raw pointers and back. Stacked Borrows 2, however, doesn't have any issue with these transmutes, so it is time to remove this hack again.
2020-01-20 11:14:46 +05:30
Mazdak Farrokhzad
a1eadca88f slice_patterns: remove gates in tests 2020-01-18 19:33:47 +01:00
bors
35b5157db5 Auto merge of #68170 - wesleywiser:stop_const_prop_ref_taking, r=oli-obk
Turn off const propagation of ref taking

Fixes #67529
Fixes #67640
Fixes #67641
Fixes #67862

r? @oli-obk
2020-01-18 11:36:47 +00:00
Ralf Jung
ec063a0ae8 adjust mir-opt tests 2020-01-18 11:15:56 +01:00
Dylan DPC
2039d7ee49
Rollup merge of #68236 - JohnTitor:ice-tests, r=Centril
Add some regression tests

Closes #64848 (fixed by #67631)
Closes #65918 (ICE is hidden by #67000, no longer ICE)
Closes #66473 (fixed by #68084)
Closes #67550 (set mir-opt-level to 3)

r? @Centril
2020-01-15 22:49:28 +05:30
Yuki Okushi
3ba15bda53 Set mir-opt-level to 3 to prevent regressions 2020-01-15 23:41:37 +09:00
Konstantinos Triantafyllou
72710d6dc2 Add unreachable propagation mir optimization pass 2020-01-14 08:22:10 +01:00
Wesley Wiser
7f65475d00 Turn off const propagation of ref taking
Fixes #67529
Fixes #67640
Fixes #67641
Fixes #67862
2020-01-12 22:27:39 -05:00
Oliver Scherer
a5d8ab713a Rebase fallout 2020-01-10 09:08:25 +01:00
Oliver Scherer
050146f7f0 Add regression tests for promotion mir expansion 2020-01-10 09:08:25 +01:00
Santiago Pastorino
1688719214 Promote Refs to constants instead of static 2020-01-10 09:08:24 +01:00
Mazdak Farrokhzad
60bef14bbc
Rollup merge of #67630 - oli-obk:extern_ptr_dangling, r=spastorino
Treat extern statics just like statics in the "const pointer to static" representation

fixes #67612

r? @spastorino

cc @RalfJung this does not affect runtime promotion at all. This is just about promotion within static item bodies.
2020-01-09 00:22:05 +01:00
Dylan DPC
cce055daef
Rollup merge of #67137 - anp:tracked-panic-internals, r=eddyb
libstd uses `core::panic::Location` where possible.

cc @eddyb
2020-01-04 23:52:44 +05:30
Adam Perry
e218da4251 Test cleanups to match #[track_caller] in panic!.
* Removes unnecessary feature flag from track_caller test.
* Tests of panic internals no longer need to explicitly construct Location.
* Add #![warn(const_err)] to retain-never-const per @oli-obk.
* Add track_caller test with diverging function.
2020-01-04 10:02:17 -08:00
Wesley Wiser
e083273ec7 Lint overflowing integer casts in const prop
This extends the invalid cases we catch in const prop to include
overflowing integer casts using the same machinery as the overflowing
binary and unary operation logic.
2019-12-30 20:06:31 -05:00
Wesley Wiser
25a8b5d58e Fix Instance::resolve() incorrectly returning specialized instances
We only want to return specializations when `Reveal::All` is passed, not
when `Reveal::UserFacing` is. Resolving this fixes several issues with
the `ConstProp`, `SimplifyBranches`, and `Inline` MIR optimization
passes.

Fixes #66901
2019-12-27 13:04:32 -05:00
Oliver Scherer
097e14d19d Treat extern statics just like statics in the "const pointer to static" representation 2019-12-26 14:50:40 +01:00
Mazdak Farrokhzad
ac6dbff45e
Rollup merge of #67333 - wesleywiser:fix_inline_into_box_place, r=oli-obk
[mir-opt] Fix `Inline` pass to handle inlining into `box` expressions

r? @oli-obk

Before, the test case just ICE'd here:

a605441e04/src/librustc_mir/transform/inline.rs (L668)
2019-12-21 19:07:36 +01:00
Wesley Wiser
f1325a78e6 Move the rest of the mir-opt inline tests into a folder 2019-12-20 20:39:47 -05:00
Wesley Wiser
bec4fc175a [mir-opt] Fix Inline pass to handle inlining into box expressions 2019-12-20 20:39:47 -05:00
Mazdak Farrokhzad
364ecf50cb
Rollup merge of #67130 - wesleywiser:const_prop_into_locals, r=oli-obk
Const prop should finish propagation into user defined variables

Fixes #66638

~~Temporarily rebased on top of #67015 to get those fixes.~~

r? @oli-obk
2019-12-20 22:05:28 +01:00
Matthew Jasper
7081c79b7e Add mir opt test for AddressOf 2019-12-18 20:09:11 +00:00
Matthew Jasper
5fb797ca75 Make slice drop shims use AddressOf 2019-12-18 20:09:10 +00:00
Matthew Jasper
35919ace70 Start generating AddressOf rvalues in MIR
`hir::BorrowKind::Raw` borrows and casting a reference to a raw
pointer no longer do a reborrow followed by a cast. Instead we
dereference and take the address.
2019-12-18 20:09:10 +00:00
Niko Matsakis
405eefe467 add #![feature(never_type)] to tests as needed 2019-12-14 09:01:18 -05:00
Niko Matsakis
1719337d02 Revert "Remove #![feature(never_type)] from tests."
This reverts commit 8f6197f39f.
2019-12-14 09:01:04 -05:00
Wesley Wiser
0745b8c5a2 Const prop should finish propagation into user defined variables
Fixes #66638
2019-12-13 06:14:15 -05:00
bors
de0abf7599 Auto merge of #66650 - matthewjasper:nonuniform-array-move, r=pnkfelix
Remove uniform array move MIR passes

This PR fixes a number of bugs caused by limitations of this pass

* Projections from constant indexes weren't being canonicalized
* Constant indexes from the start weren't being canonicalized (they could have different min_lengths)
* It didn't apply to non-moves

This PR makes the following changes to support removing this pass:

* ConstantIndex of arrays are now generated in a canonical form (from the start, min_length is the actual length).
* Subslices are now split when generating move paths and when checking subslices have been moved.

Additionally

* The parent move path of a projection from an array element is now calculated correctly

closes #66502
2019-12-11 23:00:38 +00:00
Mazdak Farrokhzad
96b288f593
Rollup merge of #67164 - matthewjasper:never-remove-const, r=oli-obk
Ensure that panicking in constants eventually errors

based on #67134

closes #66975

r? @oli-obk
2019-12-11 10:10:46 +01:00
Matthew Jasper
96dc03bad7 Remove uniform_array_move_out passes
These passes were buggy, MIR building is now responsible for
canonicalizing `ConstantIndex` projections and `MoveData` is responsible
for splitting `Subslice` projections.
2019-12-09 20:43:22 +00:00
Matthew Jasper
d2ed209699 Ensure that unevaluated constants of type ! are present in the MIR 2019-12-09 20:38:51 +00:00
Ömer Sinan Ağacan
2404a067ee const-prop: Restrict scalar pair propagation
We now only propagate a scalar pair if the Rvalue is a tuple with two
scalars. This for example avoids propagating a (u8, u8) value when
Rvalue has type `((), u8, u8)` (see the regression test). While this is
a correct thing to do, implementation is tricky and will be done later.

Fixes #66971
Fixes #66339
Fixes #67019
2019-12-06 19:36:34 +03:00
Mazdak Farrokhzad
dbe880e8ec
Rollup merge of #66850 - eddyb:span-free-formats, r=oli-obk
rustc: hide HirId's fmt::Debug output from -Z span_free_formats.

This replaces the only occurrences of `HirId {...}` from tests with paths, i.e.:
```rust
[closure@HirId { owner: DefIndex(4), local_id: 15 } q:&i32, t:&T]
```
becomes, after this PR:
```rust
[closure@foo<T>::{{closure}}#0 q:&i32, t:&T]
```

r? @oli-obk cc @michaelwoerister
2019-12-02 04:09:01 +01:00
Tomasz Miąsko
45c4e11e43 SimplifyArmIdentity only for locals with the same type
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-29 20:13:54 +01:00