about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-08-29 02:49:04 +0000
committerEric Holk <ericholk@microsoft.com>2022-09-12 16:55:58 -0700
commit12353c11ca2848c15511d3b3d400fca412daff7b (patch)
tree61817581b218bacfbab19e370809804d29d55c11 /compiler
parentef7062dad6300a42b8a13e86ff5743a1d926a5d9 (diff)
downloadrust-12353c11ca2848c15511d3b3d400fca412daff7b.tar.gz
rust-12353c11ca2848c15511d3b3d400fca412daff7b.zip
Use principal of cast target as dyn-star trait ref in codegen
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/rvalue.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
index d68a89fe793..d41817d7b65 100644
--- a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
@@ -12,7 +12,6 @@ use rustc_middle::mir;
 use rustc_middle::mir::Operand;
 use rustc_middle::ty::cast::{CastTy, IntTy};
 use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
-use rustc_middle::ty::TraitObjectRepresentation;
 use rustc_middle::ty::{self, adjustment::PointerCast, Instance, Ty, TyCtxt};
 use rustc_span::source_map::{Span, DUMMY_SP};
 
@@ -279,12 +278,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                             OperandValue::Immediate(v) => v,
                             OperandValue::Pair(_, _) => todo!(),
                         };
-                        // FIXME: find the real vtable!
-                        let trait_ref = if let ty::Dynamic(data, _, TraitObjectRepresentation::Sized) = cast.ty.kind() {
-                            data.principal()
-                        } else {
-                            bug!("Only valid to do a DynStar cast into a DynStar type")
-                        };
+                        let trait_ref =
+                            if let ty::Dynamic(data, _, ty::TraitObjectRepresentation::Sized) = cast.ty.kind() {
+                                data.principal()
+                            } else {
+                                bug!("Only valid to do a DynStar cast into a DynStar type")
+                            };
                         let vtable = get_vtable(bx.cx(), source.ty(self.mir, bx.tcx()), trait_ref);
                         OperandValue::Pair(data, vtable)
                     }