Some stats for loop effects on liveins: 487k loop set-unions (441 loops) in one func in bz2 -- fix TBD

This commit is contained in:
Chris Fallin
2021-05-07 00:19:41 -07:00
parent 2ba518517d
commit 42582e0c6f

View File

@@ -537,6 +537,10 @@ enum InsertMovePrio {
#[derive(Clone, Copy, Debug, Default)] #[derive(Clone, Copy, Debug, Default)]
pub struct Stats { pub struct Stats {
livein_blocks: usize,
livein_succ_unions: usize,
livein_loops: usize,
livein_loop_unions: usize,
initial_liverange_count: usize, initial_liverange_count: usize,
merged_bundle_count: usize, merged_bundle_count: usize,
process_bundle_count: usize, process_bundle_count: usize,
@@ -1052,6 +1056,8 @@ impl<'a, F: Function> Env<'a, F> {
let block = self.cfginfo.postorder[i]; let block = self.cfginfo.postorder[i];
block_to_postorder[block.index()] = Some(i as u32); block_to_postorder[block.index()] = Some(i as u32);
self.stats.livein_blocks += 1;
// Init live-set to union of liveins from successors // Init live-set to union of liveins from successors
// (excluding backedges; those are handled below). // (excluding backedges; those are handled below).
let mut live = None; let mut live = None;
@@ -1064,6 +1070,7 @@ impl<'a, F: Function> Env<'a, F> {
} else { } else {
live.as_mut().unwrap().or(&self.liveins[succ.index()]); live.as_mut().unwrap().or(&self.liveins[succ.index()]);
} }
self.stats.livein_succ_unions += 1;
} }
let mut live = live.unwrap_or(BitVec::new()); let mut live = live.unwrap_or(BitVec::new());
@@ -1415,7 +1422,9 @@ impl<'a, F: Function> Env<'a, F> {
i i
); );
log::debug!(" -> loop range {:?}", loop_range); log::debug!(" -> loop range {:?}", loop_range);
self.stats.livein_loops += 1;
for &loopblock in loop_blocks { for &loopblock in loop_blocks {
self.stats.livein_loop_unions += 1;
self.liveins[loopblock.index()].or(&live); self.liveins[loopblock.index()].or(&live);
} }
for vreg in live.iter() { for vreg in live.iter() {