Skip to content

Commit

Permalink
Make ConstantVector::get() always take an ArrayRef, never a std::vector.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133614 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
jayfoad committed Jun 22, 2011
1 parent 3e8cff4 commit a0c1384
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 12 deletions.
2 changes: 0 additions & 2 deletions include/llvm/Constants.h
Expand Up @@ -491,8 +491,6 @@ class ConstantVector : public Constant {
public:
// ConstantVector accessors
static Constant *get(ArrayRef<Constant*> V);
// FIXME: Eliminate this constructor form.
static Constant *get(const VectorType *T, const std::vector<Constant*> &V);

/// Transparently provide more efficient getOperand methods.
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Constant);
Expand Down
2 changes: 1 addition & 1 deletion lib/VMCore/ConstantFold.cpp
Expand Up @@ -559,7 +559,7 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, Constant *V,
for (unsigned i = 0, e = CV->getType()->getNumElements(); i != e; ++i)
res.push_back(ConstantExpr::getCast(opc,
CV->getOperand(i), DstEltTy));
return ConstantVector::get(DestVecTy, res);
return ConstantVector::get(res);
}

// We actually have to do a cast now. Perform the cast according to the
Expand Down
12 changes: 3 additions & 9 deletions lib/VMCore/Constants.cpp
Expand Up @@ -698,9 +698,9 @@ ConstantVector::ConstantVector(const VectorType *T,
}

// ConstantVector accessors.
Constant *ConstantVector::get(const VectorType *T,
const std::vector<Constant*> &V) {
Constant *ConstantVector::get(ArrayRef<Constant*> V) {
assert(!V.empty() && "Vectors can't be empty");
const VectorType *T = VectorType::get(V.front()->getType(), V.size());
LLVMContextImpl *pImpl = T->getContext().pImpl;

// If this is an all-undef or all-zero vector, return a
Expand All @@ -725,12 +725,6 @@ Constant *ConstantVector::get(const VectorType *T,
return pImpl->VectorConstants.getOrCreate(T, V);
}

Constant *ConstantVector::get(ArrayRef<Constant*> V) {
// FIXME: make this the primary ctor method.
assert(!V.empty() && "Vectors cannot be empty");
return get(VectorType::get(V.front()->getType(), V.size()), V.vec());
}

// Utility function for determining if a ConstantExpr is a CastOp or not. This
// can't be inline because we don't want to #include Instruction.h into
// Constant.h
Expand Down Expand Up @@ -2118,7 +2112,7 @@ void ConstantVector::replaceUsesOfWithOnConstant(Value *From, Value *To,
Values.push_back(Val);
}

Constant *Replacement = get(cast<VectorType>(getRawType()), Values);
Constant *Replacement = get(Values);
assert(Replacement != this && "I didn't contain From!");

// Everyone using this now uses the replacement.
Expand Down

0 comments on commit a0c1384

Please sign in to comment.