about summary refs log tree commit diff
path: root/src/librustc_codegen_ssa
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2018-11-20 13:24:41 +0100
committerOlivier Goffart <ogoffart@woboq.com>2018-11-20 13:24:41 +0100
commit4c21f66c1dffefa0dbeec3e409aa77630cb9a448 (patch)
tree43f8cfe1c3bf047b4145bb8abc42ab4932dda3e6 /src/librustc_codegen_ssa
parent86d41350c790502d3a1227bab3433ac7472ccb4c (diff)
downloadrust-4c21f66c1dffefa0dbeec3e409aa77630cb9a448.tar.gz
rust-4c21f66c1dffefa0dbeec3e409aa77630cb9a448.zip
Add comments and rename a local variable
Diffstat (limited to 'src/librustc_codegen_ssa')
-rw-r--r--src/librustc_codegen_ssa/mir/operand.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/librustc_codegen_ssa/mir/operand.rs b/src/librustc_codegen_ssa/mir/operand.rs
index 859047f5491..a91e9318471 100644
--- a/src/librustc_codegen_ssa/mir/operand.rs
+++ b/src/librustc_codegen_ssa/mir/operand.rs
@@ -243,7 +243,9 @@ impl<'a, 'tcx: 'a, V: CodegenObject> OperandRef<'tcx, V> {
             _ => bug!("OperandRef::extract_field({:?}): not applicable", self)
         };
 
-        let bitcast = |bx: &mut Bx, val, ty| {
+        // HACK(eddyb) have to bitcast pointers until LLVM removes pointee types.
+        // Bools in union fields needs to be truncated.
+        let to_immediate_or_cast = |bx: &mut Bx, val, ty| {
             if ty == bx.cx().type_i1() {
                 bx.trunc(val, ty)
             } else {
@@ -251,14 +253,15 @@ impl<'a, 'tcx: 'a, V: CodegenObject> OperandRef<'tcx, V> {
             }
         };
 
-        // HACK(eddyb) have to bitcast pointers until LLVM removes pointee types.
         match val {
             OperandValue::Immediate(ref mut llval) => {
-                *llval = bitcast(bx, *llval, bx.cx().immediate_backend_type(field));
+                *llval = to_immediate_or_cast(bx, *llval, bx.cx().immediate_backend_type(field));
             }
             OperandValue::Pair(ref mut a, ref mut b) => {
-                *a = bitcast(bx, *a, bx.cx().scalar_pair_element_backend_type(field, 0, true));
-                *b = bitcast(bx, *b, bx.cx().scalar_pair_element_backend_type(field, 1, true));
+                *a = to_immediate_or_cast(bx, *a, bx.cx()
+                    .scalar_pair_element_backend_type(field, 0, true));
+                *b = to_immediate_or_cast(bx, *b, bx.cx()
+                    .scalar_pair_element_backend_type(field, 1, true));
             }
             OperandValue::Ref(..) => bug!()
         }