From 657b1cb7398420510b2671feca588e6b1781a803 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Sat, 21 Feb 2015 21:29:04 +0000 Subject: [PATCH] R600/SI: Don't crash when getting immediate operand size llvm-svn: 230147 --- llvm/lib/Target/R600/SIInstrInfo.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/llvm/lib/Target/R600/SIInstrInfo.h b/llvm/lib/Target/R600/SIInstrInfo.h index f3285cf..4d3371b 100644 --- a/llvm/lib/Target/R600/SIInstrInfo.h +++ b/llvm/lib/Target/R600/SIInstrInfo.h @@ -254,6 +254,13 @@ public: // instruction opcode. unsigned getOpSize(uint16_t Opcode, unsigned OpNo) const { const MCOperandInfo &OpInfo = get(Opcode).OpInfo[OpNo]; + + if (OpInfo.RegClass == -1) { + // If this is an immediate operand, this must be a 32-bit literal. + assert(OpInfo.OperandType == MCOI::OPERAND_IMMEDIATE); + return 4; + } + return RI.getRegClass(OpInfo.RegClass)->getSize(); } -- 2.7.4