forked from OSchip/llvm-project
[GlobalISel] Reporting rules covered as part of the InstructionSelect's debug-only printing
The main goal of this change is to make it much easier to track which rules are actually covered by Testgen'erated regression tests. Reviewers: aemerson, dsanders Differential Revision: https://reviews.llvm.org/D46095 llvm-svn: 330988
This commit is contained in:
parent
51738f834e
commit
38489ed416
|
@ -23,15 +23,18 @@ protected:
|
|||
BitVector RuleCoverage;
|
||||
|
||||
public:
|
||||
using const_covered_iterator = BitVector::const_set_bits_iterator;
|
||||
|
||||
CodeGenCoverage();
|
||||
|
||||
void setCovered(uint64_t RuleID);
|
||||
bool isCovered(uint64_t RuleID);
|
||||
bool isCovered(uint64_t RuleID) const;
|
||||
iterator_range<const_covered_iterator> covered() const;
|
||||
|
||||
bool parse(MemoryBuffer &Buffer, StringRef BackendName);
|
||||
bool emit(StringRef FilePrefix, StringRef BackendName) const;
|
||||
void reset();
|
||||
};
|
||||
} // end namespace llvm
|
||||
} // namespace llvm
|
||||
|
||||
#endif // ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H
|
||||
|
|
|
@ -218,6 +218,12 @@ bool InstructionSelect::runOnMachineFunction(MachineFunction &MF) {
|
|||
auto &TLI = *MF.getSubtarget().getTargetLowering();
|
||||
TLI.finalizeLowering(MF);
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "Rules covered by selecting function: " << MF.getName() << ":";
|
||||
for (auto RuleID : CoverageInfo.covered())
|
||||
dbgs() << " id" << RuleID;
|
||||
dbgs() << "\n\n";
|
||||
});
|
||||
CoverageInfo.emit(CoveragePrefix,
|
||||
MF.getSubtarget()
|
||||
.getTargetLowering()
|
||||
|
|
|
@ -38,12 +38,17 @@ void CodeGenCoverage::setCovered(uint64_t RuleID) {
|
|||
RuleCoverage[RuleID] = true;
|
||||
}
|
||||
|
||||
bool CodeGenCoverage::isCovered(uint64_t RuleID) {
|
||||
bool CodeGenCoverage::isCovered(uint64_t RuleID) const {
|
||||
if (RuleCoverage.size() <= RuleID)
|
||||
return false;
|
||||
return RuleCoverage[RuleID];
|
||||
}
|
||||
|
||||
iterator_range<CodeGenCoverage::const_covered_iterator>
|
||||
CodeGenCoverage::covered() const {
|
||||
return RuleCoverage.set_bits();
|
||||
}
|
||||
|
||||
bool CodeGenCoverage::parse(MemoryBuffer &Buffer, StringRef BackendName) {
|
||||
const char *CurPtr = Buffer.getBufferStart();
|
||||
|
||||
|
|
Loading…
Reference in New Issue