mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
TableGen/AsmMatcherEmitter: Bring sorting check back under EXPENSIVE_CHECKS
Bring the sorting check back that I removed in r288655 but put it under EXPENSIVE_CHECKS this time. Also document that this the check isn't purely about having a sorted list but also about operator < having the correct transitive behavior. Apply the same to the other check in the file. llvm-svn: 288693
This commit is contained in:
parent
2b33c0d2b0
commit
a8d29aea4d
@ -1595,15 +1595,15 @@ void AsmMatcherInfo::buildInfo() {
|
||||
// Reorder classes so that classes precede super classes.
|
||||
Classes.sort();
|
||||
|
||||
#ifndef NDEBUG
|
||||
// Verify that the table is now sorted
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
// Verify that the table is sorted and operator < works transitively.
|
||||
for (auto I = Classes.begin(), E = Classes.end(); I != E; ++I) {
|
||||
for (auto J = I; J != E; ++J) {
|
||||
assert(!(*J < *I));
|
||||
assert(I == J || !J->isSubsetOf(*I));
|
||||
}
|
||||
}
|
||||
#endif // NDEBUG
|
||||
#endif
|
||||
}
|
||||
|
||||
/// buildInstructionOperandReference - The specified operand is a reference to a
|
||||
@ -2719,6 +2719,16 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
|
||||
const std::unique_ptr<MatchableInfo> &b){
|
||||
return *a < *b;});
|
||||
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
// Verify that the table is sorted and operator < works transitively.
|
||||
for (auto I = Info.Matchables.begin(), E = Info.Matchables.end(); I != E;
|
||||
++I) {
|
||||
for (auto J = I; J != E; ++J) {
|
||||
assert(!(**J < **I));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
DEBUG_WITH_TYPE("instruction_info", {
|
||||
for (const auto &MI : Info.Matchables)
|
||||
MI->dump();
|
||||
|
Loading…
Reference in New Issue
Block a user