Skip to content

Commit

Permalink
Avoid an extra alloca/memcpy when auto-ref'ing fat pointers
Browse files Browse the repository at this point in the history
auto_ref() handles fat pointers just fine and unlike ref_fat_ptr() does so
without creating an unnecessary copy of the pointer.
  • Loading branch information
dotdash committed Aug 26, 2015
1 parent ef3255b commit 05d3696
Showing 1 changed file with 1 addition and 8 deletions.
9 changes: 1 addition & 8 deletions src/librustc_trans/trans/expr.rs
Expand Up @@ -390,14 +390,7 @@ fn apply_adjustments<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
// (You might think there is a more elegant way to do this than a
// skip_reborrows bool, but then you remember that the borrow checker exists).
if skip_reborrows == 0 && adj.autoref.is_some() {
if !type_is_sized(bcx.tcx(), datum.ty) {
// Arrange cleanup
let lval = unpack_datum!(bcx,
datum.to_lvalue_datum(bcx, "ref_fat_ptr", expr.id));
datum = unpack_datum!(bcx, ref_fat_ptr(bcx, lval));
} else {
datum = unpack_datum!(bcx, auto_ref(bcx, datum, expr));
}
datum = unpack_datum!(bcx, auto_ref(bcx, datum, expr));
}

if let Some(target) = adj.unsize {
Expand Down

0 comments on commit 05d3696

Please sign in to comment.