diff options
Diffstat (limited to 'scheduling/BTLcommonaux.ml')
-rw-r--r-- | scheduling/BTLcommonaux.ml | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/scheduling/BTLcommonaux.ml b/scheduling/BTLcommonaux.ml index 4605d613..577e4828 100644 --- a/scheduling/BTLcommonaux.ml +++ b/scheduling/BTLcommonaux.ml @@ -1,15 +1,22 @@ open Maps open BTL +open Registers open BTLtypes open RTLcommonaux let undef_node = -1 -let mk_iinfo _inumb _pcond = { inumb = _inumb; pcond = _pcond; visited = false } +let mk_iinfo _inumb _pcond = { inumb = _inumb; pcond = _pcond; visited = false; liveins = Regset.empty } -let def_iinfo () = { inumb = undef_node; pcond = None; visited = false } +let def_iinfo () = { inumb = undef_node; pcond = None; visited = false; liveins = Regset.empty } -let mk_binfo _bnumb = { bnumb = _bnumb; visited = false } +let mk_binfo _bnumb _s_output_regs _typing = + { + bnumb = _bnumb; + visited = false; + s_output_regs = _s_output_regs; + typing = _typing; + } let reset_visited_ibf btl = PTree.map @@ -68,3 +75,13 @@ let rec get_inumb_or_next = function iinfo.inumb | Bseq (ib1, _) -> get_inumb_or_next ib1 | _ -> failwith "get_inumb_or_next: Bnop None" + +let get_liveins = function + | BF (_, iinfo) + | Bnop (Some iinfo) + | Bop (_, _, _, iinfo) + | Bload (_, _, _, _, _, iinfo) + | Bstore (_, _, _, _, iinfo) + | Bcond (_, _, _, _, iinfo) -> + iinfo.liveins + | _ -> failwith "get_liveins: invalid iblock" |