about summary refs log tree commit diff
path: root/src/librustc_codegen_ssa
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-12-28 06:02:45 +0000
committerbors <bors@rust-lang.org>2019-12-28 06:02:45 +0000
commit8b4d22cb25bd49ac29eaa2960b559b7eee06d197 (patch)
tree42860753218df60cbb0e0a50ed497d352f02cc2a /src/librustc_codegen_ssa
parent3a087ad3a924be12343bb035bf9b63ed81f650bf (diff)
parentdca0a339dce46db80ce45e2d24ab29c3ec93270a (diff)
downloadrust-8b4d22cb25bd49ac29eaa2960b559b7eee06d197.tar.gz
rust-8b4d22cb25bd49ac29eaa2960b559b7eee06d197.zip
Auto merge of #67598 - jumbatm:issue67557_simd_shuffle, r=oli-obk
Fix ICE / miscompilation when inlining simd shuffle intrinsic in MIR.

Closes #67557.

r? @oli-obk
Diffstat (limited to 'src/librustc_codegen_ssa')
-rw-r--r--src/librustc_codegen_ssa/mir/block.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/librustc_codegen_ssa/mir/block.rs b/src/librustc_codegen_ssa/mir/block.rs
index e856be0eeb3..a89b170c649 100644
--- a/src/librustc_codegen_ssa/mir/block.rs
+++ b/src/librustc_codegen_ssa/mir/block.rs
@@ -618,14 +618,17 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                                 if let mir::PlaceRef {
                                     base:
                                         &PlaceBase::Static(box Static {
-                                            kind: StaticKind::Promoted(promoted, _),
+                                            kind: StaticKind::Promoted(promoted, substs),
                                             ty,
-                                            def_id: _,
+                                            def_id,
                                         }),
                                     projection: &[],
                                 } = place.as_ref()
                                 {
-                                    let c = bx.tcx().const_eval_promoted(self.instance, promoted);
+                                    let c = bx.tcx().const_eval_promoted(
+                                        Instance::new(def_id, self.monomorphize(&substs)),
+                                        promoted,
+                                    );
                                     let (llval, ty) = self.simd_shuffle_indices(
                                         &bx,
                                         terminator.source_info.span,