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> {