From: Shengchen Kan Date: Sat, 26 Mar 2022 23:35:47 +0000 (+0800) Subject: [X86][tablgen] Remove PointerLikeRegClass from isRegisterOperand b/c getRegOperandSiz... X-Git-Tag: upstream/15.0.7~12225 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=460e1bd66e5757be06efc5bbb5f686fd8c119a02;p=platform%2Fupstream%2Fllvm.git [X86][tablgen] Remove PointerLikeRegClass from isRegisterOperand b/c getRegOperandSize crashes for it. NFCI --- diff --git a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp index 05e250d..eb52ebd 100644 --- a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp +++ b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp @@ -272,8 +272,7 @@ static inline bool isNOREXRegClass(const Record *Op) { static inline bool isRegisterOperand(const Record *Rec) { return Rec->isSubClassOf("RegisterClass") || - Rec->isSubClassOf("RegisterOperand") || - Rec->isSubClassOf("PointerLikeRegClass"); + Rec->isSubClassOf("RegisterOperand"); } static inline bool isMemoryOperand(const Record *Rec) { @@ -506,7 +505,10 @@ void X86FoldTablesEmitter::updateTables(const CodeGenInstruction *RegInstr, for (unsigned i = RegOutSize, e = RegInstr->Operands.size(); i < e; i++) { Record *RegOpRec = RegInstr->Operands[i].Rec; Record *MemOpRec = MemInstr->Operands[i].Rec; - if (isRegisterOperand(RegOpRec) && isMemoryOperand(MemOpRec)) { + // PointerLikeRegClass: For instructions like TAILJMPr, TAILJMPr64, TAILJMPr64_REX + if ((isRegisterOperand(RegOpRec) || + RegOpRec->isSubClassOf("PointerLikeRegClass")) && + isMemoryOperand(MemOpRec)) { switch (i) { case 0: addEntryWithFlags(Table0, RegInstr, MemInstr, S, 0);