summaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/Common/CodeGenTarget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/TableGen/Common/CodeGenTarget.cpp')
-rw-r--r--llvm/utils/TableGen/Common/CodeGenTarget.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/Common/CodeGenTarget.cpp b/llvm/utils/TableGen/Common/CodeGenTarget.cpp
index c0daac127f71..e080ca0aa0b3 100644
--- a/llvm/utils/TableGen/Common/CodeGenTarget.cpp
+++ b/llvm/utils/TableGen/Common/CodeGenTarget.cpp
@@ -283,15 +283,25 @@ void CodeGenTarget::ComputeInstrsByEnum() const {
assert(EndOfPredefines == getNumFixedInstructions() &&
"Missing generic opcode");
+ [[maybe_unused]] unsigned SkippedInsts = 0;
+
for (const auto &[_, CGIUp] : InstMap) {
const CodeGenInstruction *CGI = CGIUp.get();
if (CGI->Namespace != "TargetOpcode") {
+
+ if (CGI->TheDef->isSubClassOf(
+ "TargetSpecializedStandardPseudoInstruction")) {
+ ++SkippedInsts;
+ continue;
+ }
+
InstrsByEnum.push_back(CGI);
NumPseudoInstructions += CGI->TheDef->getValueAsBit("isPseudo");
}
}
- assert(InstrsByEnum.size() == InstMap.size() && "Missing predefined instr");
+ assert(InstrsByEnum.size() + SkippedInsts == InstMap.size() &&
+ "Missing predefined instr");
// All of the instructions are now in random order based on the map iteration.
llvm::sort(