Irina Popa
b63d7e2b1c
Rename trans to codegen everywhere.
2018-05-17 15:08:30 +03:00
David Wood
5f21aa8734
Added initial processing of UserAssertTy statements.
2018-03-22 21:11:00 +00:00
David Wood
1331cd4a8c
Killing UserAssertTy in CleanupPostBorrowck pass.
2018-03-22 21:11:00 +00:00
David Wood
17b285d203
Added UserAssertTy statement.
2018-03-22 21:10:59 +00:00
Oliver Schneider
54615ec989
Split const prop into its own pass
2018-03-08 08:34:12 +01:00
Oliver Schneider
7d2d4e3202
Add InterpretInterner to StableHashingContext for AllocId serialization
2018-03-08 08:34:08 +01:00
Manish Goregaokar
3c95814294
Perform manual fixups
2018-03-02 21:02:37 -08:00
Manish Goregaokar
8d730ed527
Run Rustfix on librustc_mir
2018-03-02 21:02:37 -08:00
John Kåre Alsaker
b74e97cf42
Replace Rc with Lrc for shared data
2018-03-02 10:48:52 +01:00
Manish Goregaokar
f59ab8e96a
Rollup merge of #48355 - mikhail-m1:subslice_pattern_array_drop2, r=nikomatsakis
...
Fixes #47311 .
r? @nrc
2018-02-28 15:09:22 -08:00
Mikhail Modin
12c7e27330
restore Subslice move out from array after elaborate drops and borrowck
2018-02-25 18:59:16 +03:00
Eduard-Mihai Burtescu
6e5dacbd5e
rustc_mir: always run the deaggregator.
2018-02-20 02:50:26 +02:00
Mikhail Modin
31253d5557
add transform for uniform array move out
2018-02-08 14:27:55 +03:00
Niko Matsakis
1c57468840
move type_check
out of transform
and into the nll
module
2017-12-15 10:10:57 -05:00
Paul Daniel Faria
a9cb25b23a
inform constraint generation using maybe-init
...
In particular, if we see a variable is DROP-LIVE, but it is not
MAYBE-INIT, then we can ignore the drop. This leavess attempt to use
more complex refinements of the idea (e.g., for subpaths or subfields)
to future work.
2017-12-04 08:51:11 -05:00
Ariel Ben-Yehuda
9dc396747b
funnel all unwind paths through a single Resume block
...
This simplifies analysis and borrow-checking because liveness at the
resume point can always be simply propagated.
Later on, the "dead" Resumes are removed.
2017-12-03 02:47:44 +02:00
Ariel Ben-Yehuda
485476c25a
add a pass to remove no-op landing pads
2017-12-03 02:47:44 +02:00
Ariel Ben-Yehuda
06eb5a6645
fix codegen of drops of fields of packed structs
2017-11-26 16:12:42 +02:00
Scott McMurray
57c0801e33
Add a MIR pass to lower 128-bit operators to lang item calls
...
Runs only with `-Z lower_128bit_ops` since it's not hooked into targets yet.
2017-11-18 21:51:14 -08:00
Eduard-Mihai Burtescu
d6aa56f44e
rustc: split off BodyOwnerKind from MirSource.
2017-11-14 08:54:27 +02:00
Eduard-Mihai Burtescu
c5022f2f16
rustc_mir: drive passes directly with a macro.
2017-11-14 08:52:25 +02:00
Eduard-Mihai Burtescu
86206f22a0
rustc: move the MIR pass infrastructure and list to rustc_mir.
2017-11-14 08:52:25 +02:00
Ariel Ben-Yehuda
12aedc833c
collect unused unsafe code
...
FIXME: de-uglify
2017-11-06 23:41:18 +02:00
Ariel Ben-Yehuda
cd279a5b98
run unsafety checking before dead block collection
...
Fixes #45087 .
2017-11-06 23:41:18 +02:00
Michael Woerister
f0bbf4e1f2
incr.comp.: Re-execute queries during red/green marking in order to find out their color.
2017-10-02 15:38:57 +02:00
Ariel Ben-Yehuda
c72a979979
move unsafety checking to MIR
...
No functional changes intended.
2017-09-24 12:46:00 +03:00
Alex Crichton
5dc9d71521
Merge remote-tracking branch 'origin/master' into gen
2017-08-21 15:50:00 -07:00
Felix S. Klock II
224c6ca2ee
Moved support code for rustc_mir::borrow_check
query out of mod transform
.
2017-08-21 13:10:13 +02:00
Felix S. Klock II
4da2a88abc
Expose mir-borrowck via a query.
...
(A followup commit removes the mir::transform based entry point.)
2017-08-21 12:49:18 +02:00
Alex Crichton
4b5f330c70
Merge remote-tracking branch 'origin/master' into gen
2017-08-17 13:23:20 -07:00
bors
dd39ecf368
Auto merge of #43902 - michaelwoerister:fix-mir-passes-promoted, r=arielb1
...
Run MIR passes on promoted temporaries again.
This seems to have been broken some time in the past (maybe here: 9c154a67bf (diff-2f8e8805126c84b2be3f0967ffa0af28L162)
).
r? @arielb1
2017-08-17 10:58:12 +00:00
Alex Crichton
5f4a99fa8b
Merge remote-tracking branch 'origin/master' into gen
2017-08-16 11:33:10 -07:00
Alex Crichton
1210ebff43
Merge remote-tracking branch 'origin/master' into gen
2017-08-16 10:03:47 -07:00
Felix S. Klock II
018784afc9
MIR based borrow check (opt-in).
...
One can either use `-Z borrowck-mir` or add the `#[rustc_mir_borrowck]` attribute
to opt into MIR based borrow checking.
Note that regardless of whether one opts in or not, AST-based borrow
check will still run as well. The errors emitted from AST-based
borrow check will include a "(Ast)" suffix in their error message,
while the errors emitted from MIR-based borrow check will include a
"(Mir)" suffix.
post-rebase: removed check for intra-statement mutual conflict;
replaced with assertion checking that at most one borrow is generated
per statement.
post-rebase: removed dead code: `IdxSet::pairs` and supporting stuff.
2017-08-16 16:08:28 +02:00
Michael Woerister
14d62c650f
Run MIR passes on promoted temporaries again.
2017-08-16 15:46:34 +02:00
Zack M. Davis
1b6c9605e4
use field init shorthand EVERYWHERE
...
Like #43008 (f668999
), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
Alex Crichton
c25ddf21f1
Merge remote-tracking branch 'origin/master' into gen
2017-08-09 11:44:21 -07:00
Ralf Jung
735ace977c
add a pass for validation commands; for now just emit the initial AcquireValid
2017-07-30 01:11:59 -07:00
John Kåre Alsaker
d861982ca6
Generator literal support
2017-07-28 15:46:23 +02:00
Paul Faria
7a966b4328
Add empty MIR pass for non-lexical lifetimes
2017-07-19 07:55:53 -04:00
Felix S. Klock II
13cd022060
Shift mir-dataflow from rustc_borrowck
to rustc_mir
crate.
...
Turn `elaborate_drops` and `rustc_peek` implementations into MIR
passes that also live in `rustc_mir` crate.
Rewire things so `rustc_driver` uses the `ElaborateDrops` from
`rustc_mir` crate.
2017-06-28 13:59:12 +02:00
Felix S. Klock II
0a5211e809
Add post-pass to remove EndRegions of unborrowed extents.
2017-06-12 13:06:42 +02:00
Niko Matsakis
b0092e89e0
move queries code into transform
2017-05-02 16:21:57 -04:00
Niko Matsakis
74b2783877
delete dead code
2017-05-02 16:21:56 -04:00
Niko Matsakis
669d31683f
simplify down to one query per pass suite
2017-05-02 16:21:55 -04:00
Niko Matsakis
9c154a67bf
rip out everything but MirPass
, move the logic into suites
2017-05-02 16:21:55 -04:00
Niko Matsakis
c253df5249
remove Pass
and (temporarily) drop Inline
2017-05-02 16:21:55 -04:00
Niko Matsakis
a26e966307
convert the inline
pass to use the new multi result
...
This involves changing various details about that system,
though the basic shape remains the same.
2017-05-02 14:01:36 -04:00
Niko Matsakis
29263fdb54
introduce idea of "stealable" MIR
...
This is a more principled version of the `RefCell` we were using
before. We now allocate a `Steal<Mir<'tcx>>` for each intermediate MIR
pass; when the next pass steals the entry, any later attempts to use it
will panic (there is no way to *test* if MIR is stolen, you're just
supposed to *know*).
2017-05-02 14:01:34 -04:00
Niko Matsakis
e89a321dff
rename MirPassSet
to MirSuite
...
This seems like a better noun.
2017-05-02 14:01:01 -04:00