diff options
| author | bors <bors@rust-lang.org> | 2018-10-01 22:32:26 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-10-01 22:32:26 +0000 |
| commit | 7cbcdae81879893f02f681d945402acedba89c7c (patch) | |
| tree | 4d85c02e43a07dbd3ba8a14c8a56ef018d24279a /src/librustc_codegen_llvm | |
| parent | de3d640f59c4fa4a09faf2a8d6b0a812aaa6d6cb (diff) | |
| parent | d62aa3e085245621218759f8c8d56e29f600b74c (diff) | |
| download | rust-7cbcdae81879893f02f681d945402acedba89c7c.tar.gz rust-7cbcdae81879893f02f681d945402acedba89c7c.zip | |
Auto merge of #54693 - RalfJung:ctfe-scalar-pair-undef, r=oli-obk
do not normalize all non-scalar constants to a ConstValue::ScalarPair We still need `ConstValue::ScalarPair` for match handling (matching slices and strings), but that will never see anything `Undef`. For non-fat-ptr `ScalarPair`, just point to the allocation like larger data structures do. Fixes https://github.com/rust-lang/rust/issues/54387 r? @eddyb
Diffstat (limited to 'src/librustc_codegen_llvm')
| -rw-r--r-- | src/librustc_codegen_llvm/mir/operand.rs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/librustc_codegen_llvm/mir/operand.rs b/src/librustc_codegen_llvm/mir/operand.rs index bfa0e0a451e..ab43531240f 100644 --- a/src/librustc_codegen_llvm/mir/operand.rs +++ b/src/librustc_codegen_llvm/mir/operand.rs @@ -8,9 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use rustc::mir::interpret::ConstEvalErr; +use rustc::mir::interpret::{ConstValue, ConstEvalErr}; use rustc::mir; -use rustc::mir::interpret::{ConstValue, ScalarMaybeUndef}; use rustc::ty; use rustc::ty::layout::{self, Align, LayoutOf, TyLayout}; use rustc_data_structures::sync::Lrc; @@ -114,15 +113,12 @@ impl OperandRef<'ll, 'tcx> { layout.scalar_pair_element_llvm_type(bx.cx, 0, true), ); let b_layout = layout.scalar_pair_element_llvm_type(bx.cx, 1, true); - let b_llval = match b { - ScalarMaybeUndef::Scalar(b) => scalar_to_llvm( - bx.cx, - b, - b_scalar, - b_layout, - ), - ScalarMaybeUndef::Undef => C_undef(b_layout), - }; + let b_llval = scalar_to_llvm( + bx.cx, + b, + b_scalar, + b_layout, + ); OperandValue::Pair(a_llval, b_llval) }, ConstValue::ByRef(_, alloc, offset) => { |
