svf-lib 1.0.1383 → 1.0.1385
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
Binary file
|
|
@@ -212,6 +212,12 @@ public:
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
+
/// domain widen with other, and return the widened domain
|
|
216
|
+
IntervalExeState widening(const IntervalExeState &other);
|
|
217
|
+
|
|
218
|
+
/// domain narrow with other, and return the narrowed domain
|
|
219
|
+
IntervalExeState narrowing(const IntervalExeState &other);
|
|
220
|
+
|
|
215
221
|
/// domain widen with other, important! other widen this.
|
|
216
222
|
void widenWith(const IntervalExeState &other);
|
|
217
223
|
|
|
@@ -252,6 +258,13 @@ public:
|
|
|
252
258
|
return true;
|
|
253
259
|
}
|
|
254
260
|
}
|
|
261
|
+
for (auto it = _locToItvVal.begin(); it != _locToItvVal.end(); ++it)
|
|
262
|
+
{
|
|
263
|
+
if (it->second.isBottom())
|
|
264
|
+
{
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
255
268
|
return false;
|
|
256
269
|
}
|
|
257
270
|
|
|
@@ -357,13 +370,9 @@ public:
|
|
|
357
370
|
|
|
358
371
|
static bool lessThanVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs)
|
|
359
372
|
{
|
|
360
|
-
if (lhs.size() != rhs.size()) return lhs.size() < rhs.size();
|
|
361
373
|
for (const auto &item: lhs)
|
|
362
374
|
{
|
|
363
375
|
auto it = rhs.find(item.first);
|
|
364
|
-
// lhs > rhs if SVFVar not exists in rhs
|
|
365
|
-
if (it == rhs.end())
|
|
366
|
-
return false;
|
|
367
376
|
// judge from expr id
|
|
368
377
|
if (!item.second.equals(it->second))
|
|
369
378
|
{
|
|
@@ -377,7 +377,7 @@ public:
|
|
|
377
377
|
}
|
|
378
378
|
else
|
|
379
379
|
{
|
|
380
|
-
this->_lb = !lb().
|
|
380
|
+
this->_lb = !lb().geq(other.lb()) ? minus_infinity() : this->lb();
|
|
381
381
|
this->_ub = !ub().geq(other.ub()) ? plus_infinity() : this->ub();
|
|
382
382
|
}
|
|
383
383
|
}
|
|
@@ -395,8 +395,8 @@ public:
|
|
|
395
395
|
}
|
|
396
396
|
else
|
|
397
397
|
{
|
|
398
|
-
this->_lb = is_infinite(this->
|
|
399
|
-
this->_ub = is_infinite(this->
|
|
398
|
+
this->_lb = is_infinite(this->lb()) ? other._lb : this->_lb;
|
|
399
|
+
this->_ub = is_infinite(this->ub()) ? other._ub : this->_ub;
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
402
|
|