mir: Ignore noop casts (e.g. when as used for coercion).

This commit is contained in:
Eduard Burtescu 2016-03-08 14:16:26 +02:00
parent 1de6a9682f
commit ccc5e0732a

View file

@ -73,8 +73,13 @@ impl<'a,'tcx> Builder<'a,'tcx> {
})
}
ExprKind::Cast { source } => {
let source = unpack!(block = this.as_operand(block, source));
block.and(Rvalue::Cast(CastKind::Misc, source, expr.ty))
let source = this.hir.mirror(source);
if source.ty == expr.ty {
this.expr_as_rvalue(block, source)
} else {
let source = unpack!(block = this.as_operand(block, source));
block.and(Rvalue::Cast(CastKind::Misc, source, expr.ty))
}
}
ExprKind::ReifyFnPointer { source } => {
let source = unpack!(block = this.as_operand(block, source));