summaryrefslogtreecommitdiff
path: root/src/trans/codegen_c.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-04-29 13:50:25 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-04-29 13:50:25 +0800
commit425cff1e1e042821a2574367713b7f2a9c75ad3e (patch)
tree7e00d504cccef286f157be94cf9f5f33747cedea /src/trans/codegen_c.cpp
parent7674c35a26030b4b232f10930dfc049ec4883718 (diff)
downloadmrust-425cff1e1e042821a2574367713b7f2a9c75ad3e.tar.gz
Trans - Better needs_drop intrinsic
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r--src/trans/codegen_c.cpp8
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" ) {