From a3590f2496c5d57b0150d43a0d4bd00b5eb344ed Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 10 Nov 2002 06:48:11 +0000 Subject: [PATCH] Implement support for swapping. Callsites now sort by callee git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4673 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/DSSupport.h | 18 ++++++++++++++++-- .../llvm/Analysis/DataStructure/DSSupport.h | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/include/llvm/Analysis/DSSupport.h b/include/llvm/Analysis/DSSupport.h index e2633ee9ece..3a5341fb35c 100644 --- a/include/llvm/Analysis/DSSupport.h +++ b/include/llvm/Analysis/DSSupport.h @@ -68,6 +68,8 @@ public: } bool operator!=(const DSNodeHandle &H) const { return !operator==(H); } + inline void swap(DSNodeHandle &H); + // Allow explicit conversion to DSNode... DSNode *getNode() const { return N; } unsigned getOffset() const { return Offset; } @@ -95,6 +97,7 @@ public: inline void setLink(unsigned Num, const DSNodeHandle &NH); }; +inline void swap(DSNodeHandle &NH1, DSNodeHandle &NH2) { NH1.swap(NH2); } //===----------------------------------------------------------------------===// /// DSTypeRec - This structure is used to represent a single type that is held @@ -205,11 +208,21 @@ public: return CallArgs[i]; } + void swap(DSCallSite &CS) { + if (this != &CS) { + std::swap(Inst, CS.Inst); + std::swap(RetVal, CS.RetVal); + std::swap(Callee, CS.Callee); + std::swap(CallArgs, CS.CallArgs); + std::swap(ResolvingCaller, CS.ResolvingCaller); + } + } + bool operator<(const DSCallSite &CS) const { + if (Callee < CS.Callee) return true; // This must sort by callee first! + if (Callee > CS.Callee) return false; if (RetVal < CS.RetVal) return true; if (RetVal > CS.RetVal) return false; - if (Callee < CS.Callee) return true; - if (Callee > CS.Callee) return false; return CallArgs < CS.CallArgs; } @@ -219,5 +232,6 @@ public: } }; +inline void swap(DSCallSite &CS1, DSCallSite &CS2) { CS1.swap(CS2); } #endif diff --git a/include/llvm/Analysis/DataStructure/DSSupport.h b/include/llvm/Analysis/DataStructure/DSSupport.h index e2633ee9ece..3a5341fb35c 100644 --- a/include/llvm/Analysis/DataStructure/DSSupport.h +++ b/include/llvm/Analysis/DataStructure/DSSupport.h @@ -68,6 +68,8 @@ public: } bool operator!=(const DSNodeHandle &H) const { return !operator==(H); } + inline void swap(DSNodeHandle &H); + // Allow explicit conversion to DSNode... DSNode *getNode() const { return N; } unsigned getOffset() const { return Offset; } @@ -95,6 +97,7 @@ public: inline void setLink(unsigned Num, const DSNodeHandle &NH); }; +inline void swap(DSNodeHandle &NH1, DSNodeHandle &NH2) { NH1.swap(NH2); } //===----------------------------------------------------------------------===// /// DSTypeRec - This structure is used to represent a single type that is held @@ -205,11 +208,21 @@ public: return CallArgs[i]; } + void swap(DSCallSite &CS) { + if (this != &CS) { + std::swap(Inst, CS.Inst); + std::swap(RetVal, CS.RetVal); + std::swap(Callee, CS.Callee); + std::swap(CallArgs, CS.CallArgs); + std::swap(ResolvingCaller, CS.ResolvingCaller); + } + } + bool operator<(const DSCallSite &CS) const { + if (Callee < CS.Callee) return true; // This must sort by callee first! + if (Callee > CS.Callee) return false; if (RetVal < CS.RetVal) return true; if (RetVal > CS.RetVal) return false; - if (Callee < CS.Callee) return true; - if (Callee > CS.Callee) return false; return CallArgs < CS.CallArgs; } @@ -219,5 +232,6 @@ public: } }; +inline void swap(DSCallSite &CS1, DSCallSite &CS2) { CS1.swap(CS2); } #endif -- 2.34.1