diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-10-21 17:28:51 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-11-03 04:35:00 -0500 |
| commit | 3ab29d337834383c159b2a4e275581f97ad34a25 (patch) | |
| tree | 9ae4e797e325c57eeab3b5d69749b3a0429ffa23 | |
| parent | b5d358084395b76277d2c92f73c28338f9432a25 (diff) | |
| download | rust-3ab29d337834383c159b2a4e275581f97ad34a25.tar.gz rust-3ab29d337834383c159b2a4e275581f97ad34a25.zip | |
Add adt_def into Switch, since it's convenient to have in trans
| -rw-r--r-- | src/librustc_mir/build/matches/test.rs | 1 | ||||
| -rw-r--r-- | src/librustc_mir/repr.rs | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/librustc_mir/build/matches/test.rs b/src/librustc_mir/build/matches/test.rs index d5745eb28c7..0d01df485fa 100644 --- a/src/librustc_mir/build/matches/test.rs +++ b/src/librustc_mir/build/matches/test.rs @@ -92,6 +92,7 @@ impl<'a,'tcx> Builder<'a,'tcx> { .collect(); self.cfg.terminate(block, Terminator::Switch { discr: lvalue.clone(), + adt_def: adt_def, targets: target_blocks.clone() }); target_blocks diff --git a/src/librustc_mir/repr.rs b/src/librustc_mir/repr.rs index 5bf326ba5a5..eb919f36cc3 100644 --- a/src/librustc_mir/repr.rs +++ b/src/librustc_mir/repr.rs @@ -247,6 +247,7 @@ pub enum Terminator<'tcx> { /// lvalue evaluates to some enum; jump depending on the branch Switch { discr: Lvalue<'tcx>, + adt_def: AdtDef<'tcx>, targets: Vec<BasicBlock>, }, @@ -279,7 +280,7 @@ impl<'tcx> Terminator<'tcx> { Goto { target: ref b } => slice::ref_slice(b), Panic { target: ref b } => slice::ref_slice(b), If { cond: _, targets: ref b } => b, - Switch { discr: _, targets: ref b } => b, + Switch { discr: _, adt_def: _, targets: ref b } => b, Diverge => &[], Return => &[], Call { data: _, targets: ref b } => b, @@ -318,7 +319,7 @@ impl<'tcx> Debug for Terminator<'tcx> { write!(fmt, "panic -> {:?}", target), If { cond: ref lv, ref targets } => write!(fmt, "if({:?}) -> {:?}", lv, targets), - Switch { discr: ref lv, ref targets } => + Switch { discr: ref lv, adt_def: _, ref targets } => write!(fmt, "switch({:?}) -> {:?}", lv, targets), Diverge => write!(fmt, "diverge"), |
