diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-04-28 21:22:26 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-04-28 21:22:26 +0800 |
commit | 647b1b3f8c55a5d0a7c48e722184b95f1d1dc6dd (patch) | |
tree | f9cc3f59e0945617294f670c0fb9a886403bf95f | |
parent | 4de1bdb03d48b2741ec1075a55f5d726facb6f91 (diff) | |
download | mrust-647b1b3f8c55a5d0a7c48e722184b95f1d1dc6dd.tar.gz |
MIR Helpers - Move visit_mir_lvalue* to somewhere common
-rw-r--r-- | src/mir/helpers.cpp | 15 | ||||
-rw-r--r-- | src/mir/helpers.hpp | 19 |
2 files changed, 25 insertions, 9 deletions
diff --git a/src/mir/helpers.cpp b/src/mir/helpers.cpp index cbd189bf..2f787927 100644 --- a/src/mir/helpers.cpp +++ b/src/mir/helpers.cpp @@ -273,17 +273,13 @@ const ::HIR::TypeRef* ::MIR::TypeResolve::is_type_owned_box(const ::HIR::TypeRef return m_resolve.is_type_owned_box(ty); } +using namespace MIR::visit; + // -------------------------------------------------------------------- // MIR_Helper_GetLifetimes // -------------------------------------------------------------------- -namespace { - enum class ValUsage { - Move, - Read, - Write, - Borrow, - }; - +namespace MIR { +namespace visit { bool visit_mir_lvalue(const ::MIR::LValue& lv, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb) { if( cb(lv, u) ) @@ -466,7 +462,8 @@ namespace { visit_mir_lvalues_mut(state, const_cast<::MIR::Function&>(fcn), [&](auto& lv, auto im){ return cb(lv, im); }); } */ -} +} // namespace visit +} // namespace MIR namespace { struct ValueLifetime diff --git a/src/mir/helpers.hpp b/src/mir/helpers.hpp index 3a37ed8e..8b4e8424 100644 --- a/src/mir/helpers.hpp +++ b/src/mir/helpers.hpp @@ -23,6 +23,10 @@ class Function; class LValue; class Constant; class BasicBlock; +class Terminator; +class Statement; +class RValue; +class Param; typedef unsigned int BasicBlockId; @@ -164,6 +168,21 @@ struct ValueLifetimes } }; +namespace visit { + enum class ValUsage { + Move, + Read, + Write, + Borrow, + }; + + extern bool visit_mir_lvalue(const ::MIR::LValue& lv, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb); + extern bool visit_mir_lvalue(const ::MIR::Param& p, ValUsage u, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb); + extern bool visit_mir_lvalues(const ::MIR::RValue& rval, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb); + extern bool visit_mir_lvalues(const ::MIR::Statement& stmt, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb); + extern bool visit_mir_lvalues(const ::MIR::Terminator& term, ::std::function<bool(const ::MIR::LValue& , ValUsage)> cb); +} // namespace visit + } // namespace MIR extern ::MIR::ValueLifetimes MIR_Helper_GetLifetimes(::MIR::TypeResolve& state, const ::MIR::Function& fcn, bool dump_debug); |