diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-07-06 16:29:30 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-07-06 16:29:30 +0800 |
commit | c4e88b3c49736e71534c918a83956885c052beb8 (patch) | |
tree | ec829a8e30c2242cf3ac964b5edc473f2af06db7 /src/hir | |
parent | 3afff6d92dd9806a6dc1e86e3dbdbf56577c6a8a (diff) | |
download | mrust-c4e88b3c49736e71534c918a83956885c052beb8.tar.gz |
MIR - Add (but don't use) a SwitchValue terminator
Diffstat (limited to 'src/hir')
-rw-r--r-- | src/hir/serialise.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/hir/serialise.cpp b/src/hir/serialise.cpp index cddbf0b8..78efe261 100644 --- a/src/hir/serialise.cpp +++ b/src/hir/serialise.cpp @@ -77,6 +77,9 @@ namespace { m_out.write_count(e.first); serialise(e.second); } + //void serialise(::MIR::BasicBlockId val) { + // m_out.write_count(val); + //} void serialise_type(const ::HIR::TypeRef& ty) { @@ -531,6 +534,12 @@ namespace { for(auto t : e.targets) m_out.write_count(t); ), + (SwitchValue, + serialise(e.val); + m_out.write_count(e.def_target); + serialise_vec(e.targets); + serialise(e.values); + ), (Call, m_out.write_count(e.ret_block); m_out.write_count(e.panic_block); @@ -540,6 +549,21 @@ namespace { ) ) } + void serialise(const ::MIR::SwitchValues& sv) + { + m_out.write_tag( static_cast<int>(sv.tag()) ); + TU_MATCHA( (sv), (e), + (Unsigned, + serialise_vec(e); + ), + (Signed, + serialise_vec(e); + ), + (String, + serialise_vec(e); + ) + ) + } void serialise(const ::MIR::CallTarget& ct) { m_out.write_tag( static_cast<int>(ct.tag()) ); |