summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-01-16 23:33:44 +0000
committerTed Kremenek <kremenek@apple.com>2008-01-16 23:33:44 +0000
commit692b01b0bea4540f389f776c2ea3c53b5e5bc01b (patch)
tree7787d4c839a5a58a099780e74d372cb076ed24b7
parent7be1528004e6a8d6d8dc1b1373159c7d8fcc2120 (diff)
downloadllvm-692b01b0bea4540f389f776c2ea3c53b5e5bc01b.tar.gz
Changed sorting criteria for DSPtr to sort Decl* before Expr*, and
to sort sub-expressions before Block-level expressions. llvm-svn: 46100
-rw-r--r--clang/Analysis/GRConstants.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/Analysis/GRConstants.cpp b/clang/Analysis/GRConstants.cpp
index 5acaf79b34ac..6c0958ef8b0f 100644
--- a/clang/Analysis/GRConstants.cpp
+++ b/clang/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<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