about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2016-03-08 14:21:11 +0200
committerEduard Burtescu <edy.burt@gmail.com>2016-03-17 21:51:53 +0200
commiteb43d952118f8d33e221c00f71a343f32ce17655 (patch)
tree2295c6b01b295dd7ff5eb0634284dd7dfbe4e151 /src
parentd3a6d67fb85c766d58c3097ef8c880e468e25478 (diff)
downloadrust-eb43d952118f8d33e221c00f71a343f32ce17655.tar.gz
rust-eb43d952118f8d33e221c00f71a343f32ce17655.zip
mir: Don't load the discriminant, it's already in immediate form.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_trans/trans/mir/rvalue.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/librustc_trans/trans/mir/rvalue.rs b/src/librustc_trans/trans/mir/rvalue.rs
index 6c4fa9cd3bd..d2806f3daba 100644
--- a/src/librustc_trans/trans/mir/rvalue.rs
+++ b/src/librustc_trans/trans/mir/rvalue.rs
@@ -248,15 +248,12 @@ impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> {
                         let r_t_out = CastTy::from_ty(cast_ty).expect("bad output type for cast");
                         let ll_t_in = type_of::immediate_type_of(bcx.ccx(), operand.ty);
                         let ll_t_out = type_of::immediate_type_of(bcx.ccx(), cast_ty);
-                        let (llval, ll_t_in, signed) = if let CastTy::Int(IntTy::CEnum) = r_t_in {
+                        let llval = operand.immediate();
+                        let signed = if let CastTy::Int(IntTy::CEnum) = r_t_in {
                             let repr = adt::represent_type(bcx.ccx(), operand.ty);
-                            let llval = operand.immediate();
-                            let discr = bcx.with_block(|bcx| {
-                                adt::trans_get_discr(bcx, &repr, llval, None, true)
-                            });
-                            (discr, common::val_ty(discr), adt::is_discr_signed(&repr))
+                            adt::is_discr_signed(&repr)
                         } else {
-                            (operand.immediate(), ll_t_in, operand.ty.is_signed())
+                            operand.ty.is_signed()
                         };
 
                         let newval = match (r_t_in, r_t_out) {