[LLVMdev] (GEP) Index validity
Matthijs Kooijman
matthijs at stdin.nl
Thu Jul 10 03:47:03 PDT 2008
Hi all,
any comments about this patch? I'd like to get it out of my working copy :-)
Gr.
Matthijs
> Index: lib/VMCore/Type.cpp
> ===================================================================
> --- lib/VMCore/Type.cpp (revision 53136)
> +++ lib/VMCore/Type.cpp (working copy)
> @@ -394,9 +394,8 @@
>
> bool StructType::indexValid(const Value *V) const {
> // Structure indexes require 32-bit integer constants.
> - if (V->getType() == Type::Int32Ty)
> - if (const ConstantInt *CU = dyn_cast<ConstantInt>(V))
> - return indexValid(CU->getZExtValue());
> + if (const ConstantInt *CU = dyn_cast<ConstantInt>(V))
> + return indexValid(CU->getZExtValue());
> return false;
> }
>
> @@ -1530,9 +1529,8 @@
> }
>
> bool SequentialType::indexValid(const Value *V) const {
> - if (const IntegerType *IT = dyn_cast<IntegerType>(V->getType()))
> - return IT->getBitWidth() == 32 || IT->getBitWidth() == 64;
> - return false;
> + // Any integer value is allowed
> + return V->getType()->isInteger();
> }
>
> namespace llvm {
> Index: lib/Target/TargetData.cpp
> ===================================================================
> --- lib/Target/TargetData.cpp (revision 53136)
> +++ lib/Target/TargetData.cpp (working copy)
> @@ -553,8 +553,7 @@
> TI = gep_type_begin(ptrTy, Indices, Indices+NumIndices);
> for (unsigned CurIDX = 0; CurIDX != NumIndices; ++CurIDX, ++TI) {
> if (const StructType *STy = dyn_cast<StructType>(*TI)) {
> - assert(Indices[CurIDX]->getType() == Type::Int32Ty &&
> - "Illegal struct idx");
> + assert(isa<ConstantInt>(Indices[CurIDX]) && "Illegal struct idx");
> unsigned FieldNo = cast<ConstantInt>(Indices[CurIDX])->getZExtValue();
>
> // Get structure layout information...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080710/b7db6765/attachment.sig>
More information about the llvm-dev
mailing list