Author: djg Date: Mon Oct 29 15:34:35 2007 New Revision: 43468 URL: http://llvm.org/viewvc/llvm-project?rev=43468&view=rev Log: Don't bitcast from pointer-to-vector to pointer-to-array when lowering load and store instructions.
Modified: llvm/trunk/lib/Transforms/Scalar/LowerPacked.cpp Modified: llvm/trunk/lib/Transforms/Scalar/LowerPacked.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LowerPacked.cpp?rev=43468&r1=43467&r2=43468&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/LowerPacked.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/LowerPacked.cpp Mon Oct 29 15:34:35 2007 @@ -217,15 +217,7 @@ if (const VectorType* PKT = dyn_cast<VectorType>(LI.getType())) { // Initialization, Idx is needed for getelementptr needed later Value *Idx[2]; - Idx[0] = ConstantInt::get(Type::Int32Ty,0); - - ArrayType* AT = ArrayType::get(PKT->getContainedType(0), - PKT->getNumElements()); - PointerType* APT = PointerType::get(AT); - - // Cast the pointer to vector type to an equivalent array - Value* array = new BitCastInst(LI.getPointerOperand(), APT, - LI.getName() + ".a", &LI); + Idx[0] = ConstantInt::get(Type::Int32Ty, 0); // Convert this load into num elements number of loads std::vector<Value*> values; @@ -236,7 +228,7 @@ Idx[1] = ConstantInt::get(Type::Int32Ty,i); // Get the pointer - Value* val = new GetElementPtrInst(array, + Value* val = new GetElementPtrInst(LI.getPointerOperand(), Idx, array_endof(Idx), LI.getName() + ".ge." + utostr(i), @@ -316,15 +308,7 @@ dyn_cast<VectorType>(SI.getOperand(0)->getType())) { // We will need this for getelementptr Value *Idx[2]; - Idx[0] = ConstantInt::get(Type::Int32Ty,0); - - ArrayType* AT = ArrayType::get(PKT->getContainedType(0), - PKT->getNumElements()); - PointerType* APT = PointerType::get(AT); - - // Cast the pointer to packed to an array of equivalent type - Value* array = new BitCastInst(SI.getPointerOperand(), APT, - "store.ge.a.", &SI); + Idx[0] = ConstantInt::get(Type::Int32Ty, 0); std::vector<Value*>& values = getValues(SI.getOperand(0)); @@ -334,7 +318,7 @@ for (unsigned i = 0, e = PKT->getNumElements(); i != e; ++i) { // Generate the indices for getelementptr Idx[1] = ConstantInt::get(Type::Int32Ty,i); - Value* val = new GetElementPtrInst(array, + Value* val = new GetElementPtrInst(SI.getPointerOperand(), Idx, array_endof(Idx), "store.ge." + utostr(i) + ".", _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits