From: Ted Kremenek Date: Wed, 16 Jan 2008 23:33:44 +0000 (+0000) Subject: Changed sorting criteria for DSPtr to sort Decl* before Expr*, and X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3d2dca4b0785f5955c6fd00ddf58755b4f0170f;p=clang Changed sorting criteria for DSPtr to sort Decl* before Expr*, and to sort sub-expressions before Block-level expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46100 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Analysis/GRConstants.cpp b/Analysis/GRConstants.cpp index 5acaf79b34..6c0958ef8b 100644 --- a/Analysis/GRConstants.cpp +++ b/Analysis/GRConstants.cpp @@ -47,7 +47,7 @@ namespace { class VISIBILITY_HIDDEN DSPtr { uintptr_t Raw; public: - enum VariantKind { IsValueDecl=0x1, IsBlkLvl=0x2, IsSubExp=0x3, Flags=0x3 }; + enum VariantKind { IsValueDecl=0x0, IsSubExp=0x1, IsBlkLvl=0x2, Flags=0x3 }; inline void* getPtr() const { return reinterpret_cast(Raw & ~Flags); } inline VariantKind getKind() const { return (VariantKind) (Raw & Flags); } @@ -63,7 +63,10 @@ public: } inline bool operator==(const DSPtr& X) const { return Raw == X.Raw; } inline bool operator!=(const DSPtr& X) const { return Raw != X.Raw; } - inline bool operator<(const DSPtr& X) const { return Raw < X.Raw; } + inline bool operator<(const DSPtr& X) const { + VariantKind k = getKind(), Xk = X.getKind(); + return k == Xk ? getPtr() < X.getPtr() : k < Xk; + } }; } // end anonymous namespace