summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-03-02 23:15:04 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-03-02 23:15:04 +0800
commit0fadf8d1cebd6dfb1195245d46a0bde51bfbdb85 (patch)
treecae9e797503096114ecb2ce66746d6f779deb5ef /src
parente00565479fd031681f047225cac5a26cfa94ad5e (diff)
downloadmrust-0fadf8d1cebd6dfb1195245d46a0bde51bfbdb85.tar.gz
MIR Gen - Reset drop flags to defaults after use
Diffstat (limited to 'src')
-rw-r--r--src/mir/mir_builder.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mir/mir_builder.cpp b/src/mir/mir_builder.cpp
index aa42cbc1..e3c0096d 100644
--- a/src/mir/mir_builder.cpp
+++ b/src/mir/mir_builder.cpp
@@ -302,6 +302,12 @@ void MirBuilder::push_stmt_drop(const Span& sp, ::MIR::LValue val, unsigned int
auto stmt = ::MIR::Statement::make_Drop({ ::MIR::eDropKind::DEEP, mv$(val), flag });
m_output.blocks.at(m_current_block).statements.push_back( mv$(stmt) );
+
+ if( flag != ~0u )
+ {
+ // Reset flag value back to default.
+ push_stmt_set_dropflag_val(sp, flag, m_output.drop_flags.at(flag));
+ }
}
void MirBuilder::push_stmt_drop_shallow(const Span& sp, ::MIR::LValue val, unsigned int flag/*=~0u*/)
{
@@ -312,6 +318,12 @@ void MirBuilder::push_stmt_drop_shallow(const Span& sp, ::MIR::LValue val, unsig
DEBUG("DROP shallow " << val);
m_output.blocks.at(m_current_block).statements.push_back( ::MIR::Statement::make_Drop({ ::MIR::eDropKind::SHALLOW, mv$(val), flag }) );
+
+ if( flag != ~0u )
+ {
+ // Reset flag value back to default.
+ push_stmt_set_dropflag_val(sp, flag, m_output.drop_flags.at(flag));
+ }
}
void MirBuilder::push_stmt_asm(const Span& sp, ::MIR::Statement::Data_Asm data)
{