Ariel Ben-Yehuda
2ee00e6d9d
add hook infrastructure for automatically dumping MIR on every pass
2016-06-09 15:21:43 +03:00
Ariel Ben-Yehuda
6405527ded
add a cache for MIR predecessors
2016-06-09 15:01:45 +03:00
Ariel Ben-Yehuda
e3af9fa490
make the basic_blocks field private
2016-06-09 14:55:19 +03:00
Ariel Ben-Yehuda
bc1eb67721
introduce the type-safe IdxVec and use it instead of loose indexes
2016-06-09 14:26:08 +03:00
Ariel Ben-Yehuda
e9003c5574
merge the RemoveDeadBlocks pass into the SimplifyCfg pass
2016-06-09 13:23:00 +03:00
Ariel Ben-Yehuda
70c25c848c
remove the librustc_trans -> librustc_mir dependency
2016-06-08 23:58:53 +03:00
Eduard Burtescu
156b1fb9e1
Add a new Assert terminator to MIR for bounds & arithmetic checks.
2016-06-05 14:41:02 +03:00
Björn Steinbrink
8ad6d27f87
[MIR] Enhance the SimplifyCfg pass to merge consecutive blocks
2016-05-13 01:46:52 +02:00
Eduard Burtescu
76affa5d6f
rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users.
2016-05-11 04:14:58 +03:00
Eduard Burtescu
513d392f7e
rustc: Replace &'a TyCtxt<'tcx> with a TyCtxt<'a, 'tcx> wrapper.
2016-05-11 04:14:58 +03:00
Eduard Burtescu
14efbf1481
mir: prepare for rvalue promotion support.
2016-05-07 07:19:10 +03:00
Oliver Schneider
3eac64747f
move const_eval
and check_match
out of librustc
2016-03-30 13:43:36 +02:00
Eduard Burtescu
5efdde0de1
rustc: move cfg, infer, traits and ty from middle to top-level.
2016-03-27 01:05:54 +02:00
Niko Matsakis
f976e222e9
fix bug in simplify_cfg
with inf. loops
2016-03-23 16:42:53 -04:00
Niko Matsakis
a61c1759c7
allow dumping intermediate IR with -Z dump-mir
2016-03-23 16:42:53 -04:00
Niko Matsakis
3a16f57fbb
extend Terminator into a struct so it can have additional fields
2016-03-23 16:42:52 -04:00
Simonas Kazlauskas
e30ff06756
Change MirPass to also take NodeId
2016-03-07 23:21:39 +02:00
Simonas Kazlauskas
811b874716
Add Pass manager for MIR
2016-03-04 15:20:10 +02:00
Simonas Kazlauskas
b92e2437f5
[MIR] Change SimplifyCfg pass to use bitvec
...
BitVector is much more space efficient.
2016-02-23 11:43:52 +02:00
Ariel Ben-Yehuda
881249aa46
use the FulfillmentContext and InferCtxt more correctly
2016-02-20 02:02:53 +02:00
Oliver Schneider
030b237476
refactor MirPass
to always require a tcx
2016-02-09 16:53:42 +01:00
Simonas Kazlauskas
02365fe753
Change successor{,_mut} to return a Vec
...
This helps to avoid the unpleasant restriction of being unable to have multiple successors in
non-contiguous block of memory.
2016-02-04 15:56:04 +02:00
Simonas Kazlauskas
4e86dcdb72
Remove diverge terminator
...
Unreachable terminator can be contained all within the trans.
2016-01-06 13:57:51 +02:00
Michael Woerister
33d29700b3
MIR: Refactor mir::Terminator to use tuples instead of a fixed-size arrays.
2015-12-10 15:46:40 -05:00
Michael Woerister
bbe1d28496
Move the core MIR datastructures to librustc.
...
This is done mostly so that we can refer to MIR types in csearch and other metadata related area.
2015-11-30 10:03:33 +01:00
Michael Woerister
c533902285
MIR: Add pass that erases all regions right before trans
2015-11-18 17:26:24 +01:00
Björn Steinbrink
a4e5c0fe84
Add a MIR pass to simplify the control flow graph
...
For now, this pass does some easy transformations, like eliminating
empty blocks that just jump to another block, some trivial
conversion of If terminators into Gotos and removal of dead blocks.
2015-11-12 14:39:23 +01:00