Skip to content

Commit 692b01b

Browse files
committed
Changed sorting criteria for DSPtr to sort Decl* before Expr*, and
to sort sub-expressions before Block-level expressions. llvm-svn: 46100
1 parent 7be1528 commit 692b01b

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

clang/Analysis/GRConstants.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ namespace {
4747
class VISIBILITY_HIDDEN DSPtr {
4848
uintptr_t Raw;
4949
public:
50-
enum VariantKind { IsValueDecl=0x1, IsBlkLvl=0x2, IsSubExp=0x3, Flags=0x3 };
50+
enum VariantKind { IsValueDecl=0x0, IsSubExp=0x1, IsBlkLvl=0x2, Flags=0x3 };
5151
inline void* getPtr() const { return reinterpret_cast<void*>(Raw & ~Flags); }
5252
inline VariantKind getKind() const { return (VariantKind) (Raw & Flags); }
5353

@@ -63,7 +63,10 @@ class VISIBILITY_HIDDEN DSPtr {
6363
}
6464
inline bool operator==(const DSPtr& X) const { return Raw == X.Raw; }
6565
inline bool operator!=(const DSPtr& X) const { return Raw != X.Raw; }
66-
inline bool operator<(const DSPtr& X) const { return Raw < X.Raw; }
66+
inline bool operator<(const DSPtr& X) const {
67+
VariantKind k = getKind(), Xk = X.getKind();
68+
return k == Xk ? getPtr() < X.getPtr() : k < Xk;
69+
}
6770
};
6871
} // end anonymous namespace
6972

0 commit comments

Comments
 (0)