Skip to content

Commit 4c039ba

Browse files
committed
Propagate merge location context down to array elements
1 parent b3c604e commit 4c039ba

File tree

5 files changed

+36
-0
lines changed

5 files changed

+36
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
int main()
2+
{
3+
int non_det;
4+
int x[2] = {0, 1};
5+
6+
if(non_det)
7+
x[0] = 2;
8+
else
9+
x[0] = 3;
10+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-arrays every-element --vsd-values intervals --vsd-liveness --show
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^main::1::x .* TOP @ \[1\]
7+
^main::1::x .* \{\[0\] = \[0, 0\] @ \[2\]
8+
^main::1::x .* \{\[0\] = \[2, 3\] @ \[7\]
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-arrays every-element --vsd-values intervals --show
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^main::1::x .* TOP @ \[1\]
7+
^main::1::x .* \{\[0\] = \[0, 0\] @ \[2\]
8+
^main::1::x .* \{\[0\] = \[2, 3\] @ \[4, 6\]
9+
--

src/analyses/variable-sensitivity/full_array_abstract_object.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,12 @@ abstract_object_pointert full_array_abstract_objectt::write_location_context(
383383
return visit_sub_elements(location_update_visitort(location));
384384
}
385385

386+
abstract_object_pointert full_array_abstract_objectt::merge_location_context(
387+
const locationt &location) const
388+
{
389+
return visit_sub_elements(merge_location_update_visitort(location));
390+
}
391+
386392
abstract_object_pointert full_array_abstract_objectt::visit_sub_elements(
387393
const abstract_object_visitort &visitor) const
388394
{

src/analyses/variable-sensitivity/full_array_abstract_object.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class full_array_abstract_objectt : public abstract_aggregate_objectt<
7070
*/
7171
abstract_object_pointert
7272
write_location_context(const locationt &location) const override;
73+
abstract_object_pointert
74+
merge_location_context(const locationt &location) const override;
7375

7476
/**
7577
* Apply a visitor operation to all sub elements of this abstract_object.

0 commit comments

Comments
 (0)