Changes in directory llvm/lib/Bytecode/Writer:
Writer.cpp updated: 1.148 -> 1.149 --- Log message: Make sure that GEP indices are only 32 or 64 bits. We're not ready for indices with other bit sizes yet. --- Diffs of the changes: (+10 -6) Writer.cpp | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) Index: llvm/lib/Bytecode/Writer/Writer.cpp diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.148 llvm/lib/Bytecode/Writer/Writer.cpp:1.149 --- llvm/lib/Bytecode/Writer/Writer.cpp:1.148 Fri Jan 12 17:26:17 2007 +++ llvm/lib/Bytecode/Writer/Writer.cpp Fri Jan 12 18:10:02 2007 @@ -486,9 +486,11 @@ // These should be either 32-bits or 64-bits, however, with bit // accurate types we just distinguish between less than or equal to // 32-bits or greater than 32-bits. - const IntegerType *IdxTy = - cast<IntegerType>(I->getOperand(Idx)->getType()); - unsigned IdxId = IdxTy->getBitWidth() <= 32 ? 0 : 1; + unsigned BitWidth = + cast<IntegerType>(I->getOperand(Idx)->getType())->getBitWidth(); + assert(BitWidth == 32 || BitWidth == 64 && + "Invalid bitwidth for GEP index"); + unsigned IdxId = BitWidth == 32 ? 0 : 1; Slot = (Slot << 1) | IdxId; } output_vbr(unsigned(Slot)); @@ -737,9 +739,11 @@ // These should be either 32-bits or 64-bits, however, with bit // accurate types we just distinguish between less than or equal to // 32-bits or greater than 32-bits. - const IntegerType *IdxTy = - cast<IntegerType>(GEP->getOperand(Idx)->getType()); - unsigned IdxId = IdxTy->getBitWidth() <= 32 ? 0 : 1; + unsigned BitWidth = + cast<IntegerType>(GEP->getOperand(Idx)->getType())->getBitWidth(); + assert(BitWidth == 32 || BitWidth == 64 && + "Invalid bitwidth for GEP index"); + unsigned IdxId = BitWidth == 32 ? 0 : 1; Slots[Idx] = (Slots[Idx] << 1) | IdxId; if (Slots[Idx] > MaxOpSlot) MaxOpSlot = Slots[Idx]; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits