Don't perform a double substitution in some cases
This commit is contained in:
parent
98c83d21f5
commit
a3cd293148
1 changed files with 10 additions and 6 deletions
|
@ -305,13 +305,17 @@ impl<'tcx, B: Backend + 'static> HasTargetSpec for FunctionCx<'_, 'tcx, B> {
|
|||
impl<'tcx, B: Backend + 'static> FunctionCx<'_, 'tcx, B> {
|
||||
pub(crate) fn monomorphize<T>(&self, value: &T) -> T
|
||||
where
|
||||
T: TypeFoldable<'tcx>,
|
||||
T: TypeFoldable<'tcx> + Copy,
|
||||
{
|
||||
self.tcx.subst_and_normalize_erasing_regions(
|
||||
self.instance.substs,
|
||||
ty::ParamEnv::reveal_all(),
|
||||
value,
|
||||
)
|
||||
if let Some(substs) = self.instance.substs_for_mir_body() {
|
||||
self.tcx.subst_and_normalize_erasing_regions(
|
||||
substs,
|
||||
ty::ParamEnv::reveal_all(),
|
||||
value,
|
||||
)
|
||||
} else {
|
||||
self.tcx.normalize_erasing_regions(ty::ParamEnv::reveal_all(), *value)
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn clif_type(&self, ty: Ty<'tcx>) -> Option<Type> {
|
||||
|
|
Loading…
Reference in a new issue