diff options
Diffstat (limited to 'include/llvm/Analysis/DataStructure/DSGraph.h')
-rw-r--r-- | include/llvm/Analysis/DataStructure/DSGraph.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/llvm/Analysis/DataStructure/DSGraph.h b/include/llvm/Analysis/DataStructure/DSGraph.h index 5efdde9a69..bc5f8242c1 100644 --- a/include/llvm/Analysis/DataStructure/DSGraph.h +++ b/include/llvm/Analysis/DataStructure/DSGraph.h @@ -55,6 +55,11 @@ public: void erase(Value *V) { erase(find(V)); } + void eraseIfExists(Value *V) { + iterator I = find(V); + if (I != end()) erase(I); + } + /// replaceScalar - When an instruction needs to be modified, this method can /// be used to update the scalar map to remove the old and insert the new. /// @@ -65,6 +70,14 @@ public: erase(I); } + /// copyScalarIfExists - If Old exists in the scalar map, make New point to + /// whatever Old did. + void copyScalarIfExists(Value *Old, Value *New) { + iterator I = find(Old); + if (I != end()) + ValueMap.insert(std::make_pair(New, I->second)); + } + DSNodeHandle &operator[](Value *V) { std::pair<iterator,bool> IP = ValueMap.insert(std::make_pair(V, DSNodeHandle())); |