summaryrefslogtreecommitdiff
path: root/src/trans/codegen_c.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2018-05-26 16:51:43 +0800
committerJohn Hodge <tpg@mutabah.net>2018-05-26 16:51:43 +0800
commit84392bea7f6f0754f61d5b424129eb5fa809674d (patch)
treece9524ca3529da511b093a9d09b166098e5cb5e4 /src/trans/codegen_c.cpp
parentc361d2d46082684b605a32de647944f9ea6607aa (diff)
downloadmrust-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.cpp5
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