[llvm-commits] [llvm] r129509 - /llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp
Chris Lattner
clattner at apple.com
Thu Apr 14 08:49:33 PDT 2011
On Apr 14, 2011, at 1:04 AM, Mon P Wang wrote:
> Author: wangmp
> Date: Thu Apr 14 03:04:01 2011
> New Revision: 129509
>
> URL: http://llvm.org/viewvc/llvm-project?rev=129509&view=rev
> Log:
> Cleanup r129472 by using a utility routine as suggested by Eli.
Thanks Mon Ping, some more minor nits :)
> +++ llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Thu Apr 14 03:04:01 2011
> @@ -676,6 +676,37 @@
> llvm_unreachable("Invalid type for a partial vector access of an alloca!");
> }
>
> +/// CreateShuffleVectorCast - Creates a shuffle vector to convert one vector
> +/// to another vector of the same element type which has the same allocation
> +/// size but different primitive sizes (e.g. <3 x i32> and <4 x i32>).
> +static Value *CreateShuffleVectorCast(Value *FromVal, const Type *ToType,
> + IRBuilder<> &Builder) {
> + const Type *FromType = FromVal->getType();
> + const VectorType *FromVTy = dyn_cast<VectorType>(FromType);
> + const VectorType *ToVTy = dyn_cast<VectorType>(ToType);
> + assert(FromVTy && ToVTy &&
> + (ToVTy->getElementType() == FromVTy->getElementType()) &&
> + "Vectors must have the same element type");
Instead of using dyn_cast + assert(!null), please just use cast<>
> + LLVMContext &Context = FromVal->getContext();
> + Value *UnV = UndefValue::get(FromType);
> + unsigned numEltsFrom = FromVTy->getNumElements();
> + unsigned numEltsTo = ToVTy->getNumElements();
> +
> + SmallVector<Constant*, 3> Args;
> + unsigned minNumElts = std::min(numEltsFrom, numEltsTo);
> + unsigned i;
> + for (i=0; i != minNumElts; ++i)
> + Args.push_back(ConstantInt::get(Type::getInt32Ty(Context), i));
You can use Builder.getInt32Ty() to simplify the code, or Builder.getInt32(i) to simplify it even more.
-Chris
More information about the llvm-commits
mailing list