diff options
author | John Hodge <tpg@mutabah.net> | 2018-05-26 16:51:43 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2018-05-26 16:51:43 +0800 |
commit | 84392bea7f6f0754f61d5b424129eb5fa809674d (patch) | |
tree | ce9524ca3529da511b093a9d09b166098e5cb5e4 /src/trans/codegen_c.cpp | |
parent | c361d2d46082684b605a32de647944f9ea6607aa (diff) | |
download | mrust-84392bea7f6f0754f61d5b424129eb5fa809674d.tar.gz |
Codegen C - Don't emit destructor when type doesn't need it
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r-- | src/trans/codegen_c.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index 59687636..187485dc 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -4670,6 +4670,11 @@ namespace { void emit_destructor_call(const ::MIR::LValue& slot, const ::HIR::TypeRef& ty, bool unsized_valid, unsigned indent_level) { + // If the type doesn't need dropping, don't try. + if( !m_resolve.type_needs_drop_glue(sp, ty) ) + { + return ; + } auto indent = RepeatLitStr { "\t", static_cast<int>(indent_level) }; TU_MATCHA( (ty.m_data), (te), // Impossible |