RegisterAnalysis<LiveIntervals> X("liveintervals",
"Live Interval Analysis");
- Statistic<> numIntervals("liveintervals", "Number of original intervals");
- Statistic<> numJoined ("liveintervals", "Number of intervals after "
- "coalescing");
- Statistic<> numJoins ("liveintervals", "Number of interval joins "
- "performed");
- Statistic<> numPeep ("liveintervals", "Number of identity moves "
- "eliminated after coalescing");
- Statistic<> numFolded ("liveintervals", "Number of register operands "
- "folded");
+ Statistic<> numIntervals
+ ("liveintervals", "Number of original intervals");
+
+ Statistic<> numIntervalsAfter
+ ("liveintervals", "Number of intervals after coalescing");
+
+ Statistic<> numJoins
+ ("liveintervals", "Number of interval joins performed");
+
+ Statistic<> numPeep
+ ("liveintervals", "Number of identity moves eliminated after coalescing");
+
+ Statistic<> numFolded
+ ("liveintervals", "Number of register operands folded");
+
cl::opt<bool>
join("join-liveintervals",
cl::desc("Join compatible live intervals"),
// join intervals if requested
if (join) joinIntervals();
+ numIntervalsAfter += intervals_.size();
+
// perform a final pass over the instructions and compute spill
// weights, coalesce virtual registers and remove identity moves
const LoopInfo& loopInfo = getAnalysis<LoopInfo>();
r2iB->second = r2iA->second;
r2rMap_.insert(std::make_pair(intB->reg, intA->reg));
intervals_.erase(intB);
- ++numJoined;
}
}
else if (MRegisterInfo::isPhysicalRegister(intA->reg) ^
r2iB->second = r2iA->second;
r2rMap_.insert(std::make_pair(intB->reg, intA->reg));
intervals_.erase(intB);
- ++numJoined;
}
}
}