[llvm-commits] [llvm] r51937 - in /llvm/trunk: include/llvm/Instructions.h lib/VMCore/Instructions.cpp
Matthijs Kooijman
matthijs at stdin.nl
Wed Jun 4 07:40:56 PDT 2008
Author: matthijs
Date: Wed Jun 4 09:40:55 2008
New Revision: 51937
URL: http://llvm.org/viewvc/llvm-project?rev=51937&view=rev
Log:
Implement the two constructors in InsertValueInst and ExtractValueInst.
Add a Name argment to two init methods in these classes as well to make things
a bit more consistent.
Modified:
llvm/trunk/include/llvm/Instructions.h
llvm/trunk/lib/VMCore/Instructions.cpp
Modified: llvm/trunk/include/llvm/Instructions.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Instructions.h?rev=51937&r1=51936&r2=51937&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Instructions.h (original)
+++ llvm/trunk/include/llvm/Instructions.h Wed Jun 4 09:40:55 2008
@@ -1458,8 +1458,8 @@
SmallVector<unsigned, 4> Indices;
ExtractValueInst(const ExtractValueInst &EVI);
- void init(Value *Agg, const unsigned *Idx, unsigned NumIdx);
- void init(Value *Agg, unsigned Idx);
+ void init(Value *Agg, const unsigned *Idx, unsigned NumIdx, const std::string &Name);
+ void init(Value *Agg, unsigned Idx, const std::string &Name);
template<typename InputIterator>
void init(Value *Agg, InputIterator IdxBegin, InputIterator IdxEnd,
@@ -1476,10 +1476,8 @@
assert(NumIdx > 0 && "ExtractValueInst must have at least one index");
// This requires that the iterator points to contiguous memory.
- init(Agg, &*IdxBegin, NumIdx); // FIXME: for the general case
- // we have to build an array here
-
- setName(Name);
+ init(Agg, &*IdxBegin, NumIdx, Name); // FIXME: for the general case
+ // we have to build an array here
}
/// getIndexedType - Returns the type of the element that would be extracted
@@ -1667,8 +1665,8 @@
void *operator new(size_t, unsigned); // Do not implement
InsertValueInst(const InsertValueInst &IVI);
- void init(Value *Agg, Value *Val, const unsigned *Idx, unsigned NumIdx);
- void init(Value *Agg, Value *Val, unsigned Idx);
+ void init(Value *Agg, Value *Val, const unsigned *Idx, unsigned NumIdx, const std::string &Name);
+ void init(Value *Agg, Value *Val, unsigned Idx, const std::string &Name);
template<typename InputIterator>
void init(Value *Agg, Value *Val,
@@ -1686,10 +1684,8 @@
assert(NumIdx > 0 && "InsertValueInst must have at least one index");
// This requires that the iterator points to contiguous memory.
- init(Agg, Val, &*IdxBegin, NumIdx); // FIXME: for the general case
- // we have to build an array here
-
- setName(Name);
+ init(Agg, Val, &*IdxBegin, NumIdx, Name); // FIXME: for the general case
+ // we have to build an array here
}
/// Constructors - Create a insertvalue instruction with a base aggregate
Modified: llvm/trunk/lib/VMCore/Instructions.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instructions.cpp?rev=51937&r1=51936&r2=51937&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Instructions.cpp (original)
+++ llvm/trunk/lib/VMCore/Instructions.cpp Wed Jun 4 09:40:55 2008
@@ -1350,21 +1350,24 @@
// InsertValueInst Class
//===----------------------------------------------------------------------===//
-void InsertValueInst::init(Value *Agg, Value *Val,
- const unsigned *Idx, unsigned NumIdx) {
+void InsertValueInst::init(Value *Agg, Value *Val, const unsigned *Idx,
+ unsigned NumIdx, const std::string &Name) {
assert(NumOperands == 2 && "NumOperands not initialized?");
Op<0>() = Agg;
Op<1>() = Val;
Indices.insert(Indices.end(), Idx, Idx + NumIdx);
+ setName(Name);
}
-void InsertValueInst::init(Value *Agg, Value *Val, unsigned Idx) {
+void InsertValueInst::init(Value *Agg, Value *Val, unsigned Idx,
+ const std::string &Name) {
assert(NumOperands == 2 && "NumOperands not initialized?");
Op<0>() = Agg;
Op<1>() = Val;
Indices.push_back(Idx);
+ setName(Name);
}
InsertValueInst::InsertValueInst(const InsertValueInst &IVI)
@@ -1373,22 +1376,46 @@
Indices(IVI.Indices) {
}
+InsertValueInst::InsertValueInst(Value *Agg,
+ Value *Val,
+ unsigned Idx,
+ const std::string &Name,
+ Instruction *InsertBefore)
+ : Instruction(Agg->getType(), InsertValue,
+ OperandTraits<InsertValueInst>::op_begin(this),
+ 2, InsertBefore) {
+ init(Agg, Val, Idx, Name);
+}
+
+InsertValueInst::InsertValueInst(Value *Agg,
+ Value *Val,
+ unsigned Idx,
+ const std::string &Name,
+ BasicBlock *InsertAtEnd)
+ : Instruction(Agg->getType(), InsertValue,
+ OperandTraits<InsertValueInst>::op_begin(this),
+ 2, InsertAtEnd) {
+ init(Agg, Val, Idx, Name);
+}
+
//===----------------------------------------------------------------------===//
// ExtractValueInst Class
//===----------------------------------------------------------------------===//
-void ExtractValueInst::init(Value *Agg, const unsigned *Idx, unsigned NumIdx) {
+void ExtractValueInst::init(Value *Agg, const unsigned *Idx, unsigned NumIdx, const std::string &Name) {
assert(NumOperands == 1 && "NumOperands not initialized?");
Op<0>() = Agg;
Indices.insert(Indices.end(), Idx, Idx + NumIdx);
+ setName(Name);
}
-void ExtractValueInst::init(Value *Agg, unsigned Idx) {
+void ExtractValueInst::init(Value *Agg, unsigned Idx, const std::string &Name) {
assert(NumOperands == 1 && "NumOperands not initialized?");
Op<0>() = Agg;
Indices.push_back(Idx);
+ setName(Name);
}
ExtractValueInst::ExtractValueInst(const ExtractValueInst &EVI)
@@ -1424,6 +1451,28 @@
return CurIdx == NumIdx ? Agg : 0;
}
+ExtractValueInst::ExtractValueInst(Value *Agg,
+ unsigned Idx,
+ const std::string &Name,
+ BasicBlock *InsertAtEnd)
+ : Instruction(checkType(getIndexedType(Agg->getType(), &Idx, 1)),
+ ExtractValue,
+ OperandTraits<ExtractValueInst>::op_begin(this),
+ 1, InsertAtEnd) {
+ init(Agg, Idx, Name);
+}
+
+ExtractValueInst::ExtractValueInst(Value *Agg,
+ unsigned Idx,
+ const std::string &Name,
+ Instruction *InsertBefore)
+ : Instruction(checkType(getIndexedType(Agg->getType(), &Idx, 1)),
+ ExtractValue,
+ OperandTraits<ExtractValueInst>::op_begin(this),
+ 1, InsertBefore) {
+ init(Agg, Idx, Name);
+}
+
//===----------------------------------------------------------------------===//
// BinaryOperator Class
//===----------------------------------------------------------------------===//
More information about the llvm-commits
mailing list