Skip to content

Commit 87f27a6

Browse files
Simplify code
1 parent 534da56 commit 87f27a6

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

clang/lib/StaticAnalyzer/Core/RegionStore.cpp

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,12 @@ class RegionBindingsRef : public llvm::ImmutableMapRef<const MemRegion *,
330330
/// the number of bindings that can be added.
331331
class BoundedRegionBindingsRef : public RegionBindingsRef {
332332
public:
333-
static BoundedRegionBindingsRef
334-
createWithLimit(RegionBindingsRef Base,
335-
SmallVectorImpl<SVal> *EscapedValuesDuringBind,
336-
unsigned BindingsLeft) {
337-
return BoundedRegionBindingsRef{Base, EscapedValuesDuringBind,
338-
BindingsLeft};
339-
}
333+
BoundedRegionBindingsRef(RegionBindingsRef Base,
334+
SmallVectorImpl<SVal> &EscapedValuesDuringBind,
335+
unsigned BindingsLeft)
336+
: RegionBindingsRef(Base),
337+
EscapedValuesDuringBind(&EscapedValuesDuringBind),
338+
BindingsLeft(BindingsLeft) {}
340339

341340
unsigned bindingsLeft() const { return BindingsLeft; }
342341

@@ -361,12 +360,12 @@ class BoundedRegionBindingsRef : public RegionBindingsRef {
361360
data_type_ref BindingKeyAndValue) const {
362361
return BoundedRegionBindingsRef{RegionBindingsRef::commitBindingsToCluster(
363362
BaseRegion, BindingKeyAndValue),
364-
EscapedValuesDuringBind, BindingsLeft};
363+
*EscapedValuesDuringBind, BindingsLeft};
365364
}
366365

367366
BoundedRegionBindingsRef removeCluster(const MemRegion *BaseRegion) const {
368367
return BoundedRegionBindingsRef{
369-
RegionBindingsRef::removeCluster(BaseRegion), EscapedValuesDuringBind,
368+
RegionBindingsRef::removeCluster(BaseRegion), *EscapedValuesDuringBind,
370369
BindingsLeft};
371370
}
372371

@@ -379,7 +378,7 @@ class BoundedRegionBindingsRef : public RegionBindingsRef {
379378
V = UnknownVal();
380379
}
381380
return BoundedRegionBindingsRef{RegionBindingsRef::addBinding(K, V),
382-
EscapedValuesDuringBind, BindingsLeft - 1};
381+
*EscapedValuesDuringBind, BindingsLeft - 1};
383382
}
384383

385384
BoundedRegionBindingsRef addBinding(const MemRegion *R, BindingKey::Kind k,
@@ -388,14 +387,7 @@ class BoundedRegionBindingsRef : public RegionBindingsRef {
388387
}
389388

390389
private:
391-
BoundedRegionBindingsRef(RegionBindingsRef Base,
392-
SmallVectorImpl<SVal> *EscapedValuesDuringBind,
393-
unsigned BindingsLeft)
394-
: RegionBindingsRef(Base),
395-
EscapedValuesDuringBind(EscapedValuesDuringBind),
396-
BindingsLeft(BindingsLeft) {}
397-
398-
SmallVectorImpl<SVal> *EscapedValuesDuringBind;
390+
SmallVectorImpl<SVal> *EscapedValuesDuringBind; // nonnull
399391
unsigned BindingsLeft;
400392
};
401393

@@ -594,7 +586,7 @@ class RegionStoreManager : public StoreManager {
594586
BindResult Bind(Store store, Loc LV, SVal V) override {
595587
llvm::SmallVector<SVal, 0> EscapedValuesDuringBind;
596588
BoundedRegionBindingsRef BoundedBindings =
597-
getRegionBindings(store, &EscapedValuesDuringBind);
589+
getRegionBindings(store, EscapedValuesDuringBind);
598590
return BindResult{StoreRef(bind(BoundedBindings, LV, V).asStore(), *this),
599591
std::move(EscapedValuesDuringBind)};
600592
}
@@ -608,7 +600,7 @@ class RegionStoreManager : public StoreManager {
608600
SVal V) override {
609601
llvm::SmallVector<SVal, 0> EscapedValuesDuringBind;
610602
BoundedRegionBindingsRef B =
611-
getRegionBindings(store, &EscapedValuesDuringBind);
603+
getRegionBindings(store, EscapedValuesDuringBind);
612604
// Use other APIs when you have to wipe the region that was initialized
613605
// earlier.
614606
assert(!(B.getDefaultBinding(R) || B.getDirectBinding(R)) &&
@@ -637,7 +629,7 @@ class RegionStoreManager : public StoreManager {
637629

638630
llvm::SmallVector<SVal, 0> EscapedValuesDuringBind;
639631
BoundedRegionBindingsRef B =
640-
getRegionBindings(store, &EscapedValuesDuringBind);
632+
getRegionBindings(store, EscapedValuesDuringBind);
641633
SVal V = svalBuilder.makeZeroVal(Ctx.CharTy);
642634
B = removeSubRegionBindings(B, cast<SubRegion>(R));
643635
B = B.addBinding(BindingKey::Make(R, BindingKey::Default), V);
@@ -809,8 +801,8 @@ class RegionStoreManager : public StoreManager {
809801

810802
BoundedRegionBindingsRef
811803
getRegionBindings(Store store,
812-
SmallVectorImpl<SVal> *EscapedValuesDuringBind) const {
813-
return BoundedRegionBindingsRef::createWithLimit(
804+
SmallVectorImpl<SVal> &EscapedValuesDuringBind) const {
805+
return BoundedRegionBindingsRef(
814806
getRegionBindings(store), EscapedValuesDuringBind,
815807
/*BindingsLeft=*/RegionStoreMaxBindingFanOut);
816808
}

0 commit comments

Comments
 (0)