From: Chris Lattner Date: Sat, 28 Jul 2001 17:51:21 +0000 (+0000) Subject: * Make sure that the size of the type field can also control the output X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7c5014767f8f4696365f663bf0f4ddb4abfbe068;p=oota-llvm.git * Make sure that the size of the type field can also control the output instruction pattern. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@324 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Bytecode/Writer/InstructionWriter.cpp b/lib/Bytecode/Writer/InstructionWriter.cpp index 18140772a39..3ab882fa7b9 100644 --- a/lib/Bytecode/Writer/InstructionWriter.cpp +++ b/lib/Bytecode/Writer/InstructionWriter.cpp @@ -187,6 +187,7 @@ bool BytecodeWriter::processInstruction(const Instruction *I) { break; case Instruction::Store: Ty = I->getOperand(1)->getType(); // Encode the pointer type... + assert(Ty->isPointerType() && "Store to nonpointer type!?!?"); break; default: // Otherwise use the default behavior... Ty = NumOperands ? I->getOperand(0)->getType() : I->getType(); @@ -198,6 +199,11 @@ bool BytecodeWriter::processInstruction(const Instruction *I) { assert(Slot != -1 && "Type not available!!?!"); Type = (unsigned)Slot; + // Make sure that we take the type number into consideration. We don't want + // to overflow the field size for the instruction format we select. + // + if (Slot > MaxOpSlot) MaxOpSlot = Slot; + // Handle the special case for cast... if (I->getOpcode() == Instruction::Cast) { // Cast has to encode the destination type as the second argument in the