The "ambiguous instructions" check only produces anything with -debug,

so only do the N^2 loop with debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113168 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-09-06 20:21:47 +00:00
parent 69c7249a6f
commit 87410368e1

View File

@ -1513,29 +1513,30 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
});
// Check for ambiguous instructions.
unsigned NumAmbiguous = 0;
for (unsigned i = 0, e = Info.Instructions.size(); i != e; ++i) {
for (unsigned j = i + 1; j != e; ++j) {
InstructionInfo &A = *Info.Instructions[i];
InstructionInfo &B = *Info.Instructions[j];
if (A.CouldMatchAmiguouslyWith(B)) {
DEBUG_WITH_TYPE("ambiguous_instrs", {
errs() << "warning: ambiguous instruction match:\n";
A.dump();
errs() << "\nis incomparable with:\n";
B.dump();
errs() << "\n\n";
});
++NumAmbiguous;
DEBUG(unsigned NumAmbiguous = 0;
for (unsigned i = 0, e = Info.Instructions.size(); i != e; ++i) {
for (unsigned j = i + 1; j != e; ++j) {
InstructionInfo &A = *Info.Instructions[i];
InstructionInfo &B = *Info.Instructions[j];
if (A.CouldMatchAmiguouslyWith(B)) {
DEBUG_WITH_TYPE("ambiguous_instrs", {
errs() << "warning: ambiguous instruction match:\n";
A.dump();
errs() << "\nis incomparable with:\n";
B.dump();
errs() << "\n\n";
});
++NumAmbiguous;
}
}
}
}
if (NumAmbiguous)
DEBUG_WITH_TYPE("ambiguous_instrs", {
errs() << "warning: " << NumAmbiguous
<< " ambiguous instructions!\n";
});
if (NumAmbiguous)
DEBUG_WITH_TYPE("ambiguous_instrs", {
errs() << "warning: " << NumAmbiguous
<< " ambiguous instructions!\n";
});
);
// Write the output.