diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-04-29 13:50:25 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-04-29 13:50:25 +0800 |
commit | 425cff1e1e042821a2574367713b7f2a9c75ad3e (patch) | |
tree | 7e00d504cccef286f157be94cf9f5f33747cedea /src/trans/codegen_c.cpp | |
parent | 7674c35a26030b4b232f10930dfc049ec4883718 (diff) | |
download | mrust-425cff1e1e042821a2574367713b7f2a9c75ad3e.tar.gz |
Trans - Better needs_drop intrinsic
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r-- | src/trans/codegen_c.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index c3532073..5386de18 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -2116,15 +2116,15 @@ namespace { else if( name == "needs_drop" ) { // Returns `true` if the actual type given as `T` requires drop glue; // returns `false` if the actual type provided for `T` implements `Copy`. (Either otherwise) + // NOTE: libarena assumes that this returns `true` iff T doesn't require drop glue. const auto& ty = params.m_types.at(0); emit_lvalue(e.ret_val); m_of << " = "; - if( m_resolve.type_is_copy(Span(), ty) ) { - m_of << "false"; + if( m_resolve.type_needs_drop_glue(mir_res.sp, ty) ) { + m_of << "true"; } - // If T: !Copy, return true else { - m_of << "true"; + m_of << "false"; } } else if( name == "uninit" ) { |