From 84392bea7f6f0754f61d5b424129eb5fa809674d Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 26 May 2018 16:51:43 +0800 Subject: Codegen C - Don't emit destructor when type doesn't need it --- src/trans/codegen_c.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') 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(indent_level) }; TU_MATCHA( (ty.m_data), (te), // Impossible -- cgit v1.2.3