llvm-clang-x86_64-expensive-checks-debian will fail after D150436 merged.
The fail occurred in X86, I changed the sort rule in AsmMatcher in Patch D150436, so x86 code will arrive line 633 first(will not affect other targets).
The logic here want to use the order record written in source file to make AsmMatcher to first use AVX instructions, it used field HasPositionOrder.
But the condition here just makes sure one of the compared record is subclass of Instruction and has field HasPositionOrder true, and didn't check another.
(Committing on behalf of @XinWang10 to unblock broken expensive-cjhecks builds)
Differential Revision: https://reviews.llvm.org/D150651
// We use the ID to sort AVX instruction before AVX512 instruction in
// matching table.
if (TheDef->isSubClassOf("Instruction") &&
- TheDef->getValueAsBit("HasPositionOrder"))
+ TheDef->getValueAsBit("HasPositionOrder") &&
+ RHS.TheDef->isSubClassOf("Instruction") &&
+ RHS.TheDef->getValueAsBit("HasPositionOrder"))
return TheDef->getID() < RHS.TheDef->getID();
// Give matches that require more features higher precedence. This is useful