From 9948fe6997bc59e0fbf3535404013784f5cb183d Mon Sep 17 00:00:00 2001 From: James Molloy Date: Wed, 9 Oct 2019 09:15:34 +0000 Subject: [TableGen] Fix crash when using HwModes in CodeEmitterGen When an instruction has an encoding definition for only a subset of the available HwModes, ensure we just avoid generating an encoding rather than crash. llvm-svn: 374150 --- llvm/utils/TableGen/CodeEmitterGen.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'llvm/utils/TableGen/CodeEmitterGen.cpp') diff --git a/llvm/utils/TableGen/CodeEmitterGen.cpp b/llvm/utils/TableGen/CodeEmitterGen.cpp index b021d08881f..42f69cb253d 100644 --- a/llvm/utils/TableGen/CodeEmitterGen.cpp +++ b/llvm/utils/TableGen/CodeEmitterGen.cpp @@ -367,7 +367,8 @@ void CodeEmitterGen::emitInstructionBaseValues( if (const RecordVal *RV = R->getValue("EncodingInfos")) { if (auto *DI = dyn_cast_or_null(RV->getValue())) { EncodingInfoByHwMode EBM(DI->getDef(), HWM); - EncodingDef = EBM.get(HwMode); + if (EBM.hasMode(HwMode)) + EncodingDef = EBM.get(HwMode); } } BitsInit *BI = EncodingDef->getValueAsBitsInit("Inst"); -- cgit v1.2.3