diff options
| author | Olivier Goffart <ogoffart@woboq.com> | 2018-11-20 13:24:41 +0100 |
|---|---|---|
| committer | Olivier Goffart <ogoffart@woboq.com> | 2018-11-20 13:24:41 +0100 |
| commit | 4c21f66c1dffefa0dbeec3e409aa77630cb9a448 (patch) | |
| tree | 43f8cfe1c3bf047b4145bb8abc42ab4932dda3e6 /src/librustc_codegen_ssa | |
| parent | 86d41350c790502d3a1227bab3433ac7472ccb4c (diff) | |
| download | rust-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.rs | 13 |
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!() } |
