@@ -1953,27 +1953,27 @@ class RangeConstraintManager : public RangedConstraintManager {
1953
1953
const llvm::APSInt &To, const llvm::APSInt &Adjustment) override ;
1954
1954
1955
1955
private:
1956
- RangeSet::Factory F;
1956
+ mutable RangeSet::Factory F;
1957
1957
1958
- RangeSet getRange (ProgramStateRef State, SymbolRef Sym);
1958
+ RangeSet getRange (ProgramStateRef State, SymbolRef Sym) const ;
1959
1959
ProgramStateRef setRange (ProgramStateRef State, SymbolRef Sym,
1960
1960
RangeSet Range);
1961
1961
1962
1962
RangeSet getSymLTRange (ProgramStateRef St, SymbolRef Sym,
1963
1963
const llvm::APSInt &Int,
1964
- const llvm::APSInt &Adjustment);
1964
+ const llvm::APSInt &Adjustment) const ;
1965
1965
RangeSet getSymGTRange (ProgramStateRef St, SymbolRef Sym,
1966
1966
const llvm::APSInt &Int,
1967
- const llvm::APSInt &Adjustment);
1967
+ const llvm::APSInt &Adjustment) const ;
1968
1968
RangeSet getSymLERange (ProgramStateRef St, SymbolRef Sym,
1969
1969
const llvm::APSInt &Int,
1970
- const llvm::APSInt &Adjustment);
1970
+ const llvm::APSInt &Adjustment) const ;
1971
1971
RangeSet getSymLERange (llvm::function_ref<RangeSet()> RS,
1972
1972
const llvm::APSInt &Int,
1973
- const llvm::APSInt &Adjustment);
1973
+ const llvm::APSInt &Adjustment) const ;
1974
1974
RangeSet getSymGERange (ProgramStateRef St, SymbolRef Sym,
1975
1975
const llvm::APSInt &Int,
1976
- const llvm::APSInt &Adjustment);
1976
+ const llvm::APSInt &Adjustment) const ;
1977
1977
};
1978
1978
1979
1979
// ===----------------------------------------------------------------------===//
@@ -2880,21 +2880,18 @@ ConditionTruthVal RangeConstraintManager::checkNull(ProgramStateRef State,
2880
2880
2881
2881
const llvm::APSInt *RangeConstraintManager::getSymVal (ProgramStateRef St,
2882
2882
SymbolRef Sym) const {
2883
- auto &MutableSelf = const_cast <RangeConstraintManager &>(*this );
2884
- return MutableSelf.getRange (St, Sym).getConcreteValue ();
2883
+ return getRange (St, Sym).getConcreteValue ();
2885
2884
}
2886
2885
2887
2886
const llvm::APSInt *RangeConstraintManager::getSymMinVal (ProgramStateRef St,
2888
2887
SymbolRef Sym) const {
2889
- auto &MutableSelf = const_cast <RangeConstraintManager &>(*this );
2890
- RangeSet Range = MutableSelf.getRange (St, Sym);
2888
+ RangeSet Range = getRange (St, Sym);
2891
2889
return Range.isEmpty () ? nullptr : &Range.getMinValue ();
2892
2890
}
2893
2891
2894
2892
const llvm::APSInt *RangeConstraintManager::getSymMaxVal (ProgramStateRef St,
2895
2893
SymbolRef Sym) const {
2896
- auto &MutableSelf = const_cast <RangeConstraintManager &>(*this );
2897
- RangeSet Range = MutableSelf.getRange (St, Sym);
2894
+ RangeSet Range = getRange (St, Sym);
2898
2895
return Range.isEmpty () ? nullptr : &Range.getMaxValue ();
2899
2896
}
2900
2897
@@ -3039,7 +3036,7 @@ RangeConstraintManager::removeDeadBindings(ProgramStateRef State,
3039
3036
}
3040
3037
3041
3038
RangeSet RangeConstraintManager::getRange (ProgramStateRef State,
3042
- SymbolRef Sym) {
3039
+ SymbolRef Sym) const {
3043
3040
return SymbolicRangeInferrer::inferRange (F, State, Sym);
3044
3041
}
3045
3042
@@ -3094,10 +3091,10 @@ RangeConstraintManager::assumeSymEQ(ProgramStateRef St, SymbolRef Sym,
3094
3091
return setRange (St, Sym, New);
3095
3092
}
3096
3093
3097
- RangeSet RangeConstraintManager::getSymLTRange (ProgramStateRef St,
3098
- SymbolRef Sym,
3099
- const llvm::APSInt &Int,
3100
- const llvm::APSInt &Adjustment) {
3094
+ RangeSet
3095
+ RangeConstraintManager::getSymLTRange (ProgramStateRef St, SymbolRef Sym,
3096
+ const llvm::APSInt &Int,
3097
+ const llvm::APSInt &Adjustment) const {
3101
3098
// Before we do any real work, see if the value can even show up.
3102
3099
APSIntType AdjustmentType (Adjustment);
3103
3100
switch (AdjustmentType.testInRange (Int, true )) {
@@ -3131,10 +3128,10 @@ RangeConstraintManager::assumeSymLT(ProgramStateRef St, SymbolRef Sym,
3131
3128
return setRange (St, Sym, New);
3132
3129
}
3133
3130
3134
- RangeSet RangeConstraintManager::getSymGTRange (ProgramStateRef St,
3135
- SymbolRef Sym,
3136
- const llvm::APSInt &Int,
3137
- const llvm::APSInt &Adjustment) {
3131
+ RangeSet
3132
+ RangeConstraintManager::getSymGTRange (ProgramStateRef St, SymbolRef Sym,
3133
+ const llvm::APSInt &Int,
3134
+ const llvm::APSInt &Adjustment) const {
3138
3135
// Before we do any real work, see if the value can even show up.
3139
3136
APSIntType AdjustmentType (Adjustment);
3140
3137
switch (AdjustmentType.testInRange (Int, true )) {
@@ -3168,10 +3165,10 @@ RangeConstraintManager::assumeSymGT(ProgramStateRef St, SymbolRef Sym,
3168
3165
return setRange (St, Sym, New);
3169
3166
}
3170
3167
3171
- RangeSet RangeConstraintManager::getSymGERange (ProgramStateRef St,
3172
- SymbolRef Sym,
3173
- const llvm::APSInt &Int,
3174
- const llvm::APSInt &Adjustment) {
3168
+ RangeSet
3169
+ RangeConstraintManager::getSymGERange (ProgramStateRef St, SymbolRef Sym,
3170
+ const llvm::APSInt &Int,
3171
+ const llvm::APSInt &Adjustment) const {
3175
3172
// Before we do any real work, see if the value can even show up.
3176
3173
APSIntType AdjustmentType (Adjustment);
3177
3174
switch (AdjustmentType.testInRange (Int, true )) {
@@ -3208,7 +3205,7 @@ RangeConstraintManager::assumeSymGE(ProgramStateRef St, SymbolRef Sym,
3208
3205
RangeSet
3209
3206
RangeConstraintManager::getSymLERange (llvm::function_ref<RangeSet()> RS,
3210
3207
const llvm::APSInt &Int,
3211
- const llvm::APSInt &Adjustment) {
3208
+ const llvm::APSInt &Adjustment) const {
3212
3209
// Before we do any real work, see if the value can even show up.
3213
3210
APSIntType AdjustmentType (Adjustment);
3214
3211
switch (AdjustmentType.testInRange (Int, true )) {
@@ -3234,10 +3231,10 @@ RangeConstraintManager::getSymLERange(llvm::function_ref<RangeSet()> RS,
3234
3231
return F.intersect (Default, Lower, Upper);
3235
3232
}
3236
3233
3237
- RangeSet RangeConstraintManager::getSymLERange (ProgramStateRef St,
3238
- SymbolRef Sym,
3239
- const llvm::APSInt &Int,
3240
- const llvm::APSInt &Adjustment) {
3234
+ RangeSet
3235
+ RangeConstraintManager::getSymLERange (ProgramStateRef St, SymbolRef Sym,
3236
+ const llvm::APSInt &Int,
3237
+ const llvm::APSInt &Adjustment) const {
3241
3238
return getSymLERange ([&] { return getRange (St, Sym); }, Int, Adjustment);
3242
3239
}
3243
3240
0 commit comments