diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-25 17:19:06 +1100 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-25 17:19:06 +1100 |
commit | 27b0292ca6828eed7e782a57ad4d641f0ebf7357 (patch) | |
tree | d453c1936058b6a4be061a3b418abe0fc80cecbb /src/mir/from_hir.cpp | |
parent | 9c7978323aaf7b1c9f9840b7665f43b59f4de282 (diff) | |
download | mrust-27b0292ca6828eed7e782a57ad4d641f0ebf7357.tar.gz |
MIR Gen - Misc fixes for drop order quirks
Diffstat (limited to 'src/mir/from_hir.cpp')
-rw-r--r-- | src/mir/from_hir.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mir/from_hir.cpp b/src/mir/from_hir.cpp index 272cea48..c50806f5 100644 --- a/src/mir/from_hir.cpp +++ b/src/mir/from_hir.cpp @@ -1804,7 +1804,11 @@ namespace { assert( !values_set[idx] ); values_set[idx] = true; this->visit_node_ptr(valnode); - values.at(idx) = m_builder.lvalue_or_temp( valnode->span(), valnode->m_res_type, m_builder.get_result(valnode->span()) ); + + // NOTE: Have to allocate a new temporary because ordering matters + auto tmp = m_builder.new_temporary(valnode->m_res_type); + m_builder.push_stmt_assign( valnode->span(), tmp.clone(), m_builder.get_result(valnode->span()) ); + values.at(idx) = mv$(tmp); } for(unsigned int i = 0; i < values.size(); i ++) { |