Skip to content

Commit 2bd7a23

Browse files
committed
Skip reveal_all if needs_subst.
1 parent d2a1b80 commit 2bd7a23

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/librustc/mir/interpret/queries.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use super::{ConstEvalResult, ErrorHandled, GlobalId};
33
use crate::mir;
44
use crate::ty::subst::{InternalSubsts, SubstsRef};
55
use crate::ty::{self, TyCtxt};
6+
use crate::ty::fold::TypeFoldable;
67
use rustc_hir::def_id::DefId;
78
use rustc_span::Span;
89

@@ -18,7 +19,13 @@ impl<'tcx> TyCtxt<'tcx> {
1819
let substs = InternalSubsts::identity_for_item(self, def_id);
1920
let instance = ty::Instance::new(def_id, substs);
2021
let cid = GlobalId { instance, promoted: None };
21-
let param_env = self.param_env(def_id).with_reveal_all();
22+
let needs_subst = instance.needs_subst();
23+
let param_env = if needs_subst {
24+
self.param_env(def_id)
25+
} else {
26+
self.param_env(def_id).with_reveal_all()
27+
};
28+
debug!("const_eval_poly: needs_subst = {:?}. param_env = {:?}", needs_subst, param_env);
2229
self.const_eval_global_id(param_env, cid, None)
2330
}
2431

src/librustc_mir/interpret/place.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ where
305305
) -> InterpResult<'tcx, MPlaceTy<'tcx, M::PointerTag>> {
306306
let pointee_type =
307307
val.layout.ty.builtin_deref(true).expect("`ref_to_mplace` called on non-ptr type").ty;
308-
let layout = self.layout_of(pointee_type)?;
308+
let layout = self.layout_of(pointee_type);
309+
debug!("ref_to_mplace: layout_of(pointee_type = {:?}) = {:?}", pointee_type, layout);
310+
let layout = layout?;
309311
let (ptr, meta) = match *val {
310312
Immediate::Scalar(ptr) => (ptr.not_undef()?, MemPlaceMeta::None),
311313
Immediate::ScalarPair(ptr, meta) => {

0 commit comments

Comments
 (0)