summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-05-13 13:42:06 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-05-13 13:42:06 +0800
commita25a8fa64b36cb43bc4b0a3054f51c65ceaf6b61 (patch)
treee6fb0ba6c214bc5765694c30f9f14a8cba175783
parentfde22b3f03d802231985b8ded567cba16cb5aa00 (diff)
downloadmrust-a25a8fa64b36cb43bc4b0a3054f51c65ceaf6b61.tar.gz
MIR Optimise - Fix incorrect optimisation of function return
-rw-r--r--src/mir/optimise.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mir/optimise.cpp b/src/mir/optimise.cpp
index d7379526..3b5fa036 100644
--- a/src/mir/optimise.cpp
+++ b/src/mir/optimise.cpp
@@ -2149,7 +2149,7 @@ bool MIR_Optimise_PropagateSingleAssignments(::MIR::TypeResolve& state, ::MIR::F
if( !e.ret_val.is_Temporary() )
continue ;
const auto& vu = val_uses.tmp_uses[e.ret_val.as_Temporary().idx];
- if( !( vu.read == 1 && vu.write == 1 ) )
+ if( !( vu.read == 1 && vu.write == 1 && vu.borrow == 0 ) )
continue ;
// Iterate the target block, looking for where this value is used.