From ddb95263c85cc0742db75d6d1000ba1286f8b576 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 1 Nov 2001 05:54:28 +0000 Subject: [PATCH] Add simpler to use ctors. Add getType() overload to specialize getelementptr's type llvm-svn: 1077 --- include/llvm/iMemory.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/llvm/iMemory.h b/include/llvm/iMemory.h index 5ce03ef7365..4e50f30bebc 100644 --- a/include/llvm/iMemory.h +++ b/include/llvm/iMemory.h @@ -183,6 +183,8 @@ public: bool AllowStructLeaf = false); const vector& getIndexVec() const { return indexVec; } + + inline bool hasIndices() const { return !indexVec.empty(); } virtual Value* getPtrOperand() = 0; @@ -203,6 +205,8 @@ class LoadInst : public MemAccessInst { public: LoadInst(Value *Ptr, const vector &Idx, const string &Name = ""); + LoadInst(Value *Ptr, const string &Name = ""); + virtual Instruction* clone() const { return new LoadInst(*this); } virtual const char* getOpcodeName() const { return "load"; } virtual Value* getPtrOperand() { return this->getOperand(0); } @@ -232,7 +236,9 @@ class StoreInst : public MemAccessInst { public: StoreInst(Value *Val, Value *Ptr, const vector &Idx, const string &Name = ""); + StoreInst(Value *Val, Value *Ptr, const string &Name = ""); virtual Instruction *clone() const { return new StoreInst(*this); } + virtual const char *getOpcodeName() const { return "store"; } virtual bool hasSideEffects() const { return true; } @@ -272,6 +278,10 @@ public: inline bool isArraySelector() const { return !isStructSelector(); } bool isStructSelector() const; + // getType - Overload to return most specific pointer type... + inline const PointerType *getType() const { + return cast(Instruction::getType()); + } // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const GetElementPtrInst *) { return true; }