[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