summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2018-07-01 11:48:48 +0800
committerJohn Hodge <tpg@ucc.asn.au>2018-07-01 11:48:48 +0800
commitebd09a2c391abc83969f00770343331ca27e90a9 (patch)
tree0968124cc4d3728cbce7e003c063447d2f45a925
parent5d16c2a8498d880f200f0602f63753b144b5cb6b (diff)
downloadmrust-ebd09a2c391abc83969f00770343331ca27e90a9.tar.gz
Codegen C - Avoid &* pattern in reborrows
-rw-r--r--src/trans/codegen_c.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 91138d14..d8cdb58d 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -2589,14 +2589,12 @@ namespace {
::HIR::TypeRef tmp;
const auto& ty = mir_res.get_lvalue_type(tmp, ve.val);
bool special = false;
- // If the inner value has type [T] or str, create DST based on inner pointer and existing metadata
+ // If the inner value was a deref, just copy the pointer verbatim
TU_IFLET(::MIR::LValue, ve.val, Deref, le,
- if( metadata_type(ty) != MetadataType::None ) {
- emit_lvalue(e.dst);
- m_of << " = ";
- emit_lvalue(*le.val);
- special = true;
- }
+ emit_lvalue(e.dst);
+ m_of << " = ";
+ emit_lvalue(*le.val);
+ special = true;
)
// Magic for taking a &-ptr to unsized field of a struct.
// - Needs to get metadata from bottom-level pointer.