[llvm-commits] CVS: llvm/include/llvm/iMemory.h
Chris Lattner
lattner at cs.uiuc.edu
Wed Jul 14 11:14:04 PDT 2004
Changes in directory llvm/include/llvm:
iMemory.h updated: 1.47 -> 1.48
---
Log message:
* Change code to use a static_cast instead of reinterpret_cast
* Add comments
* Add two new gep ctors for the very common case of creating a two operand
GEP instruction.
---
Diffs of the changes: (+17 -2)
Index: llvm/include/llvm/iMemory.h
diff -u llvm/include/llvm/iMemory.h:1.47 llvm/include/llvm/iMemory.h:1.48
--- llvm/include/llvm/iMemory.h:1.47 Thu Jul 1 15:22:31 2004
+++ llvm/include/llvm/iMemory.h Wed Jul 14 13:13:54 2004
@@ -273,18 +273,31 @@
///
class GetElementPtrInst : public Instruction {
GetElementPtrInst(const GetElementPtrInst &EPI)
- : Instruction(reinterpret_cast<const Type*>(EPI.getType()), GetElementPtr) {
+ : Instruction((static_cast<const Instruction*>(&EPI)->getType()),
+ GetElementPtr) {
Operands.reserve(EPI.Operands.size());
for (unsigned i = 0, E = EPI.Operands.size(); i != E; ++i)
Operands.push_back(Use(EPI.Operands[i], this));
}
void init(Value *Ptr, const std::vector<Value*> &Idx);
-
+ void init(Value *Ptr, Value *Idx0, Value *Idx1);
public:
+ /// Constructors - Create a getelementptr instruction with a base pointer an
+ /// list of indices. The first ctor can optionally insert before an existing
+ /// instruction, the second appends the new instruction to the specified
+ /// BasicBlock.
GetElementPtrInst(Value *Ptr, const std::vector<Value*> &Idx,
const std::string &Name = "", Instruction *InsertBefore =0);
GetElementPtrInst(Value *Ptr, const std::vector<Value*> &Idx,
const std::string &Name, BasicBlock *InsertAtEnd);
+
+ /// Constructors - These two constructors are convenience methods because two
+ /// index getelementptr instructions are so common.
+ GetElementPtrInst(Value *Ptr, Value *Idx0, Value *Idx1,
+ const std::string &Name = "", Instruction *InsertBefore =0);
+ GetElementPtrInst(Value *Ptr, Value *Idx0, Value *Idx1,
+ const std::string &Name, BasicBlock *InsertAtEnd);
+
virtual Instruction *clone() const { return new GetElementPtrInst(*this); }
// getType - Overload to return most specific pointer type...
@@ -300,6 +313,8 @@
///
static const Type *getIndexedType(const Type *Ptr,
const std::vector<Value*> &Indices,
+ bool AllowStructLeaf = false);
+ static const Type *getIndexedType(const Type *Ptr, Value *Idx0, Value *Idx1,
bool AllowStructLeaf = false);
inline op_iterator idx_begin() { return op_begin()+1; }
More information about the llvm-commits
mailing list