From 8314328ea51fa217abc7dfec44acf5b04c85f58e Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 11 Mar 2017 17:14:30 +0800 Subject: MIR Check full - Fiddling (still unbouned memory usage) --- src/mir/check_full.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mir/check_full.cpp b/src/mir/check_full.cpp index 1703dfd4..8dcd359c 100644 --- a/src/mir/check_full.cpp +++ b/src/mir/check_full.cpp @@ -12,7 +12,7 @@ #include #include -#define ENABLE_LEAK_DETECTOR 0 +#define ENABLE_LEAK_DETECTOR 1 namespace { @@ -108,6 +108,8 @@ namespace } }; + if( this->drop_flags != x.drop_flags ) + return false; if( ! H::equal(*this, return_value, x, x.return_value) ) return false; assert(vars.size() == x.vars.size()); @@ -182,6 +184,7 @@ namespace const auto& ty = mir_res.get_lvalue_type(tmp, lv); if( mir_res.m_resolve.type_is_copy(mir_res.sp, ty) ) { + // NOTE: Copy types aren't moved. } else { @@ -448,6 +451,7 @@ namespace } } this->known_state_sets.push_back( state_set.clone() ); + this->known_state_sets.back().bb_path = ::std::vector(); return true; } }; @@ -488,6 +492,12 @@ namespace std { os << "ValueStates(path=[" << x.bb_path << "]"; print_val(",rv", x.return_value); + for(unsigned int i = 0; i < x.arguments.size(); i ++) + print_val(FMT_CB(ss, ss << ",a" << i;), x.arguments[i]); + for(unsigned int i = 0; i < x.vars.size(); i ++) + print_val(FMT_CB(ss, ss << ",_" << i;), x.vars[i]); + for(unsigned int i = 0; i < x.temporaries.size(); i ++) + print_val(FMT_CB(ss, ss << ",t" << i;), x.temporaries[i]); os << ")"; return os; } -- cgit v1.2.3