Skip to content

Commit e2a2c83

Browse files
author
Gabor Marton
committed
[Analyzer][NFC] Add RangedConstraintManager to ConstraintAssignor
In this patch we store a reference to `RangedConstraintManager` in the `ConstraintAssignor`. This way it is possible to call back and reuse some functions of it. This patch is exclusively needed for its child patches, it is not intended to be a standalone patch. Differential Revision: https://reviews.llvm.org/D111640
1 parent 01b4ddb commit e2a2c83

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,12 +1600,13 @@ class ConstraintAssignor : public ConstraintAssignorBase<ConstraintAssignor> {
16001600
public:
16011601
template <class ClassOrSymbol>
16021602
LLVM_NODISCARD static ProgramStateRef
1603-
assign(ProgramStateRef State, SValBuilder &Builder, RangeSet::Factory &F,
1604-
ClassOrSymbol CoS, RangeSet NewConstraint) {
1603+
assign(ProgramStateRef State, RangeConstraintManager &RCM,
1604+
SValBuilder &Builder, RangeSet::Factory &F, ClassOrSymbol CoS,
1605+
RangeSet NewConstraint) {
16051606
if (!State || NewConstraint.isEmpty())
16061607
return nullptr;
16071608

1608-
ConstraintAssignor Assignor{State, Builder, F};
1609+
ConstraintAssignor Assignor{State, RCM, Builder, F};
16091610
return Assignor.assign(CoS, NewConstraint);
16101611
}
16111612

@@ -1614,9 +1615,9 @@ class ConstraintAssignor : public ConstraintAssignorBase<ConstraintAssignor> {
16141615
RangeSet Constraint);
16151616

16161617
private:
1617-
ConstraintAssignor(ProgramStateRef State, SValBuilder &Builder,
1618-
RangeSet::Factory &F)
1619-
: State(State), Builder(Builder), RangeFactory(F) {}
1618+
ConstraintAssignor(ProgramStateRef State, RangeConstraintManager &RCM,
1619+
SValBuilder &Builder, RangeSet::Factory &F)
1620+
: State(State), RCM(RCM), Builder(Builder), RangeFactory(F) {}
16201621
using Base = ConstraintAssignorBase<ConstraintAssignor>;
16211622

16221623
/// Base method for handling new constraints for symbols.
@@ -1696,6 +1697,7 @@ class ConstraintAssignor : public ConstraintAssignorBase<ConstraintAssignor> {
16961697
}
16971698

16981699
ProgramStateRef State;
1700+
RangeConstraintManager &RCM;
16991701
SValBuilder &Builder;
17001702
RangeSet::Factory &RangeFactory;
17011703
};
@@ -2420,7 +2422,8 @@ RangeSet RangeConstraintManager::getRange(ProgramStateRef State,
24202422
ProgramStateRef RangeConstraintManager::setRange(ProgramStateRef State,
24212423
SymbolRef Sym,
24222424
RangeSet Range) {
2423-
return ConstraintAssignor::assign(State, getSValBuilder(), F, Sym, Range);
2425+
return ConstraintAssignor::assign(State, *this, getSValBuilder(), F, Sym,
2426+
Range);
24242427
}
24252428

24262429
//===------------------------------------------------------------------------===

0 commit comments

Comments
 (0)