From: Chris Lattner Date: Sat, 27 Apr 2002 02:27:11 +0000 (+0000) Subject: Support array allocations X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=12be9749d60c647a804fa6f057d7c1cf20fd3714;p=oota-llvm.git Support array allocations git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2326 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/DataStructure.h b/include/llvm/Analysis/DataStructure.h index 0474da11d1f..2d21545aebb 100644 --- a/include/llvm/Analysis/DataStructure.h +++ b/include/llvm/Analysis/DataStructure.h @@ -180,6 +180,7 @@ public: // isEquivalentTo - Return true if the nodes should be merged... virtual bool isEquivalentTo(DSNode *Node) const = 0; + virtual void mergeInto(DSNode *Node) const {} DSNode *clone() const { DSNode *New = cloneImpl(); @@ -210,8 +211,9 @@ protected: // class AllocDSNode : public DSNode { AllocationInst *Allocation; + bool isVarSize; // Allocating variable sized objects public: - AllocDSNode(AllocationInst *V); + AllocDSNode(AllocationInst *V, bool isVarSize = false); virtual std::string getCaption() const; @@ -219,15 +221,18 @@ public: bool isMallocNode() const { return !isAllocaNode(); } AllocationInst *getAllocation() const { return Allocation; } + bool isVariableSize() const { return isVarSize; } // isEquivalentTo - Return true if the nodes should be merged... virtual bool isEquivalentTo(DSNode *Node) const; + virtual void mergeInto(DSNode *Node) const; // Support type inquiry through isa, cast, and dyn_cast... static bool classof(const AllocDSNode *) { return true; } static bool classof(const DSNode *N) { return N->NodeType == NewNode; } protected: - virtual AllocDSNode *cloneImpl() const { return new AllocDSNode(Allocation); } + virtual AllocDSNode *cloneImpl() const { return new AllocDSNode(Allocation, + isVarSize); } }; diff --git a/include/llvm/Analysis/DataStructure/DataStructure.h b/include/llvm/Analysis/DataStructure/DataStructure.h index 0474da11d1f..2d21545aebb 100644 --- a/include/llvm/Analysis/DataStructure/DataStructure.h +++ b/include/llvm/Analysis/DataStructure/DataStructure.h @@ -180,6 +180,7 @@ public: // isEquivalentTo - Return true if the nodes should be merged... virtual bool isEquivalentTo(DSNode *Node) const = 0; + virtual void mergeInto(DSNode *Node) const {} DSNode *clone() const { DSNode *New = cloneImpl(); @@ -210,8 +211,9 @@ protected: // class AllocDSNode : public DSNode { AllocationInst *Allocation; + bool isVarSize; // Allocating variable sized objects public: - AllocDSNode(AllocationInst *V); + AllocDSNode(AllocationInst *V, bool isVarSize = false); virtual std::string getCaption() const; @@ -219,15 +221,18 @@ public: bool isMallocNode() const { return !isAllocaNode(); } AllocationInst *getAllocation() const { return Allocation; } + bool isVariableSize() const { return isVarSize; } // isEquivalentTo - Return true if the nodes should be merged... virtual bool isEquivalentTo(DSNode *Node) const; + virtual void mergeInto(DSNode *Node) const; // Support type inquiry through isa, cast, and dyn_cast... static bool classof(const AllocDSNode *) { return true; } static bool classof(const DSNode *N) { return N->NodeType == NewNode; } protected: - virtual AllocDSNode *cloneImpl() const { return new AllocDSNode(Allocation); } + virtual AllocDSNode *cloneImpl() const { return new AllocDSNode(Allocation, + isVarSize); } };