Skip to content

Commit 48d2545

Browse files
committed
NFC Use std::tuple as suggested
1 parent 26f0cfa commit 48d2545

File tree

1 file changed

+14
-25
lines changed

1 file changed

+14
-25
lines changed

clang/lib/StaticAnalyzer/Core/RegionStore.cpp

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -250,36 +250,25 @@ class RegionBindingsRef : public llvm::ImmutableMapRef<const MemRegion *,
250250
std::pair<const MemRegion *, ImmutableMap<BindingKey, SVal>>;
251251
using Binding = std::pair<BindingKey, SVal>;
252252

253-
const auto MemSpaceBeforeRegionName = [&ToString](const Cluster *L,
254-
const Cluster *R) {
255-
if (isa<MemSpaceRegion>(L->first) && !isa<MemSpaceRegion>(R->first))
256-
return true;
257-
if (!isa<MemSpaceRegion>(L->first) && isa<MemSpaceRegion>(R->first))
258-
return false;
259-
return ToString(L->first) < ToString(R->first);
253+
const auto ClusterSortKey = [&ToString](const Cluster *C) {
254+
const MemRegion *Key = C->first;
255+
return std::tuple{isa<MemSpaceRegion>(Key), ToString(Key)};
260256
};
261257

262-
const auto SymbolicBeforeOffset = [&ToString](const BindingKey &L,
263-
const BindingKey &R) {
264-
if (L.hasSymbolicOffset() && !R.hasSymbolicOffset())
265-
return true;
266-
if (!L.hasSymbolicOffset() && R.hasSymbolicOffset())
267-
return false;
268-
if (L.hasSymbolicOffset() && R.hasSymbolicOffset())
269-
return ToString(L.getRegion()) < ToString(R.getRegion());
270-
return L.getOffset() < R.getOffset();
258+
const auto MemSpaceBeforeRegionName = [&ClusterSortKey](const Cluster *L,
259+
const Cluster *R) {
260+
return ClusterSortKey(L) < ClusterSortKey(R);
261+
};
262+
263+
const auto BindingSortKey = [&ToString](const Binding *BPtr) {
264+
const BindingKey &Key = BPtr->first;
265+
return std::tuple{Key.isDirect(), !Key.hasSymbolicOffset(),
266+
ToString(Key.getRegion()), Key.getOffset()};
271267
};
272268

273269
const auto DefaultBindingBeforeDirectBindings =
274-
[&SymbolicBeforeOffset](const Binding *LPtr, const Binding *RPtr) {
275-
const BindingKey &L = LPtr->first;
276-
const BindingKey &R = RPtr->first;
277-
if (L.isDefault() && !R.isDefault())
278-
return true;
279-
if (!L.isDefault() && R.isDefault())
280-
return false;
281-
assert(L.isDefault() == R.isDefault());
282-
return SymbolicBeforeOffset(L, R);
270+
[&BindingSortKey](const Binding *LPtr, const Binding *RPtr) {
271+
return BindingSortKey(LPtr) < BindingSortKey(RPtr);
283272
};
284273

285274
const auto AddrOf = [](const auto &Item) { return &Item; };

0 commit comments

Comments
 (0)