]> granicus.if.org Git - clang/commitdiff
Changed sorting criteria for DSPtr to sort Decl* before Expr*, and
authorTed Kremenek <kremenek@apple.com>
Wed, 16 Jan 2008 23:33:44 +0000 (23:33 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 16 Jan 2008 23:33:44 +0000 (23:33 +0000)
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

Analysis/GRConstants.cpp

index 5acaf79b34acdf94478c9d77de0aa38c5182515d..6c0958ef8b0ff60d6f60330d8f25b354063cd7b6 100644 (file)
@@ -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<void*>(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