diff options
author | John Hodge <tpg@ucc.asn.au> | 2018-07-01 11:48:48 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2018-07-01 11:48:48 +0800 |
commit | ebd09a2c391abc83969f00770343331ca27e90a9 (patch) | |
tree | 0968124cc4d3728cbce7e003c063447d2f45a925 | |
parent | 5d16c2a8498d880f200f0602f63753b144b5cb6b (diff) | |
download | mrust-ebd09a2c391abc83969f00770343331ca27e90a9.tar.gz |
Codegen C - Avoid &* pattern in reborrows
-rw-r--r-- | src/trans/codegen_c.cpp | 12 |
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. |