message: Don't perform a double substitution in some cases
diff: @@ -305,13 +305,17 @@ fn target_spec(&self) -> &Target {
  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,
  {
  + if let Some(substs) = self.instance.substs_for_mir_body() {
  self.tcx.subst_and_normalize_erasing_regions(
  - self.instance.substs,
  + 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> {
  