Skip to content

Commit 5988c79

Browse files
committed
[X86][tablgen] Add assertions when emitting NF transform table
1 parent bdd4e8b commit 5988c79

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

llvm/utils/TableGen/X86InstrMappingEmitter.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,22 @@ void X86InstrMappingEmitter::emitNFTransformTable(
277277
if (Pos == std::string::npos)
278278
continue;
279279

280-
if (auto *NewRec = Records.getDef(Name.erase(Pos, 3)))
280+
if (auto *NewRec = Records.getDef(Name.erase(Pos, 3))) {
281+
#ifndef NDEBUG
282+
auto ClobberEFLAGS = [](const Record *R) {
283+
return llvm::any_of(
284+
R->getValueAsListOfDefs("Defs"),
285+
[](const Record *Def) { return Def->getName() == "EFLAGS"; });
286+
};
287+
if (ClobberEFLAGS(Rec))
288+
report_fatal_error("EFLAGS should not be clobbered by " +
289+
Rec->getName());
290+
if (!ClobberEFLAGS(NewRec))
291+
report_fatal_error("EFLAGS should be clobbered by " +
292+
NewRec->getName());
293+
#endif
281294
Table.push_back(std::pair(&Target.getInstruction(NewRec), Inst));
295+
}
282296
}
283297
printTable(Table, "X86NFTransformTable", "GET_X86_NF_TRANSFORM_TABLE", OS);
284298
}

0 commit comments

Comments
 (0)