diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-03-21 22:56:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-21 22:56:20 +0100 |
| commit | ecf3ef52a6f986863cce5eb749b73e182db3f36e (patch) | |
| tree | 415fe822289721b9e69ae33c95110dbd51aed057 /src/librustc_codegen_ssa | |
| parent | ce0af8a5bd90de722d5653965f7edcf2c302cf59 (diff) | |
| parent | 96bbd1ccb6c210318d5ba90e7b68430b643e470a (diff) | |
| download | rust-ecf3ef52a6f986863cce5eb749b73e182db3f36e.tar.gz rust-ecf3ef52a6f986863cce5eb749b73e182db3f36e.zip | |
Rollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung,eddyb
Fix ICE caused by truncating a negative ZST enum discriminant Fixes #70114 r? @oli-obk or @RalfJung
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/mir/rvalue.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/librustc_codegen_ssa/mir/rvalue.rs b/src/librustc_codegen_ssa/mir/rvalue.rs index 6d004606398..245df0846b5 100644 --- a/src/librustc_codegen_ssa/mir/rvalue.rs +++ b/src/librustc_codegen_ssa/mir/rvalue.rs @@ -293,7 +293,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { if let Some(discr) = operand.layout.ty.discriminant_for_variant(bx.tcx(), index) { - let discr_val = bx.cx().const_uint_big(ll_t_out, discr.val); + let discr_layout = bx.cx().layout_of(discr.ty); + let discr_t = bx.cx().immediate_backend_type(discr_layout); + let discr_val = bx.cx().const_uint_big(discr_t, discr.val); + let discr_val = + bx.intcast(discr_val, ll_t_out, discr.ty.is_signed()); + return ( bx, OperandRef { |
