diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-30 13:04:16 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-30 13:04:16 +0800 |
commit | c0899af785c37c6d384d164bb885ab130631592f (patch) | |
tree | 111029a7fd7b8880f27a493cf404eafe0cf486fc | |
parent | f65754cca71fb35479d08d71b64785612eff73f7 (diff) | |
download | mrust-c0899af785c37c6d384d164bb885ab130631592f.tar.gz |
Trans Enumerate - Fix missed functions
-rw-r--r-- | src/trans/enumerate.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/trans/enumerate.cpp b/src/trans/enumerate.cpp index 8b6836de..c29e5dfc 100644 --- a/src/trans/enumerate.cpp +++ b/src/trans/enumerate.cpp @@ -128,7 +128,7 @@ TransList Trans_Enumerate_Public(const ::HIR::Crate& crate) /// Common post-processing -TransList Trans_Enumerate_CommonPost(EnumState& state) +void Trans_Enumerate_CommonPost_Run(EnumState& state) { // Run the enumerate queue (keeps the recursion depth down) while( !state.fcn_queue.empty() ) @@ -140,7 +140,10 @@ TransList Trans_Enumerate_CommonPost(EnumState& state) Trans_Enumerate_FillFrom(state, *fcn_out.ptr, fcn_out.pp); } - +} +TransList Trans_Enumerate_CommonPost(EnumState& state) +{ + Trans_Enumerate_CommonPost_Run(state); Trans_Enumerate_Types(state); return mv$(state.rv); @@ -413,6 +416,9 @@ void Trans_Enumerate_Types(EnumState& state) } } types_count = state.rv.m_types.size(); + + // Run queue + Trans_Enumerate_CommonPost_Run(state); } while(constructors_added); } @@ -732,6 +738,7 @@ void Trans_Enumerate_FillFrom_MIR(EnumState& state, const ::MIR::Function& code, { TU_MATCHA((stmt), (se), (Assign, + DEBUG("- " << se.dst << " = " << se.src); Trans_Enumerate_FillFrom_MIR_LValue(state, se.dst, pp); TU_MATCHA( (se.src), (e), (Use, @@ -746,7 +753,7 @@ void Trans_Enumerate_FillFrom_MIR(EnumState& state, const ::MIR::Function& code, (Bytes, ), (StaticString, ), // String (Const, - Trans_Enumerate_FillFrom_Path(state, ce.p, pp); + //Trans_Enumerate_FillFrom_Path(state, ce.p, pp); ), (ItemAddr, Trans_Enumerate_FillFrom_Path(state, ce, pp); @@ -797,17 +804,20 @@ void Trans_Enumerate_FillFrom_MIR(EnumState& state, const ::MIR::Function& code, ) ), (Asm, + DEBUG("- asm! ..."); for(const auto& v : se.inputs) Trans_Enumerate_FillFrom_MIR_LValue(state, v.second, pp); for(const auto& v : se.outputs) Trans_Enumerate_FillFrom_MIR_LValue(state, v.second, pp); ), (Drop, + DEBUG("- DROP " << se.slot); Trans_Enumerate_FillFrom_MIR_LValue(state, se.slot, pp); // TODO: Ensure that the drop glue for this type is generated ) ) } + DEBUG("> " << bb.terminator); TU_MATCHA( (bb.terminator), (e), (Incomplete, ), (Return, ), |