Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Promote Repeats to constants instead of statics
  • Loading branch information
spastorino authored and oli-obk committed Jan 10, 2020
1 parent 1688719 commit 2508f17
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions src/librustc_mir/transform/promote_consts.rs
Expand Up @@ -1002,10 +1002,25 @@ impl<'a, 'tcx> Promoter<'a, 'tcx> {
StatementKind::Assign(box (_, Rvalue::Repeat(ref mut operand, _))) => {
let ty = operand.ty(local_decls, self.tcx);
let span = statement.source_info.span;
Rvalue::Use(mem::replace(
operand,
Operand::Copy(promoted_place(ty, span)),
))

promoted.span = span;
promoted.local_decls[RETURN_PLACE] =
LocalDecl::new_return_place(ty, span);

let promoted_operand = Operand::Constant(Box::new(Constant {
span,
user_ty: None,
literal: tcx.mk_const(ty::Const {
ty,
val: ty::ConstKind::Unevaluated(
def_id,
InternalSubsts::identity_for_item(tcx, def_id),
Some(promoted_id),
),
}),
}));

Rvalue::Use(mem::replace(operand, promoted_operand))
}
_ => bug!(),
}
Expand Down

0 comments on commit 2508f17

Please sign in to comment.