Skip to content

Commit e6f6970

Browse files
authored
Merge pull request #5678 from jezhiggins/vsd-pointer-arithmetic
VSD pointer arithmetic, differencing, and comparisons
2 parents b65fee1 + 4844d22 commit e6f6970

File tree

78 files changed

+1451
-124
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1451
-124
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <assert.h>
2+
3+
int main()
4+
{
5+
int a[2];
6+
int *p = a;
7+
8+
++p;
9+
assert(p == &(a[1]));
10+
11+
--p;
12+
assert(p == a);
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers constants --vsd-values constants --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] line 9 assertion p == \&\(a\[1\]\): SUCCESS
7+
^\[main.assertion.2\] line 12 assertion p == a: SUCCESS
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include <assert.h>
2+
3+
int main()
4+
{
5+
struct int_pair
6+
{
7+
int a;
8+
int b;
9+
};
10+
struct int_pair x[2];
11+
12+
int *pa = &(x[0].a);
13+
14+
assert(pa == &(x[0].a));
15+
assert(pa != &(x[0].a));
16+
assert(pa == &(x[0].b));
17+
assert(pa != &(x[0].b));
18+
assert(pa == &(x[1].a));
19+
assert(pa != &(x[1].a));
20+
assert(pa == &(x[1].b));
21+
assert(pa != &(x[1].b));
22+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers constants --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion pa == &\(x\[0\].a\): SUCCESS
7+
^\[main.assertion.2\] .* assertion pa != &\(x\[0\].a\): FAILURE
8+
^\[main.assertion.3\] .* assertion pa == &\(x\[0\].b\): FAILURE
9+
^\[main.assertion.4\] .* assertion pa != &\(x\[0\].b\): SUCCESS
10+
^\[main.assertion.5\] .* assertion pa == &\(x\[1\].a\): FAILURE
11+
^\[main.assertion.6\] .* assertion pa != &\(x\[1\].a\): SUCCESS
12+
^\[main.assertion.7\] .* assertion pa == &\(x\[1\].b\): FAILURE
13+
^\[main.assertion.8\] .* assertion pa != &\(x\[1\].b\): SUCCESS
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers top-bottom --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion pa == &\(x\[0\].a\): UNKNOWN
7+
^\[main.assertion.2\] .* assertion pa != &\(x\[0\].a\): UNKNOWN
8+
^\[main.assertion.3\] .* assertion pa == &\(x\[0\].b\): UNKNOWN
9+
^\[main.assertion.4\] .* assertion pa != &\(x\[0\].b\): UNKNOWN
10+
^\[main.assertion.5\] .* assertion pa == &\(x\[1\].a\): UNKNOWN
11+
^\[main.assertion.6\] .* assertion pa != &\(x\[1\].a\): UNKNOWN
12+
^\[main.assertion.7\] .* assertion pa == &\(x\[1\].b\): UNKNOWN
13+
^\[main.assertion.8\] .* assertion pa != &\(x\[1\].b\): UNKNOWN
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers value-set --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion pa == &\(x\[0\].a\): SUCCESS
7+
^\[main.assertion.2\] .* assertion pa != &\(x\[0\].a\): FAILURE
8+
^\[main.assertion.3\] .* assertion pa == &\(x\[0\].b\): FAILURE
9+
^\[main.assertion.4\] .* assertion pa != &\(x\[0\].b\): SUCCESS
10+
^\[main.assertion.5\] .* assertion pa == &\(x\[1\].a\): FAILURE
11+
^\[main.assertion.6\] .* assertion pa != &\(x\[1\].a\): SUCCESS
12+
^\[main.assertion.7\] .* assertion pa == &\(x\[1\].b\): FAILURE
13+
^\[main.assertion.8\] .* assertion pa != &\(x\[1\].b\): SUCCESS
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#include <assert.h>
2+
3+
int main()
4+
{
5+
int a[2];
6+
int b[2];
7+
int c;
8+
9+
int *p = &(a[0]);
10+
int *q = &(b[1]);
11+
int *r = &c;
12+
13+
assert(p == q);
14+
assert(p == r);
15+
assert(q == r);
16+
17+
assert(p != q);
18+
assert(p != r);
19+
assert(q != r);
20+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers constants --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion p == q: FAILURE
7+
^\[main.assertion.2\] .* assertion p == r: FAILURE
8+
^\[main.assertion.3\] .* assertion q == r: FAILURE
9+
^\[main.assertion.4\] .* assertion p != q: SUCCESS
10+
^\[main.assertion.5\] .* assertion p != r: SUCCESS
11+
^\[main.assertion.6\] .* assertion q != r: SUCCESS
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers top-bottom --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion p == q: UNKNOWN
7+
^\[main.assertion.2\] .* assertion p == r: UNKNOWN
8+
^\[main.assertion.3\] .* assertion q == r: UNKNOWN
9+
^\[main.assertion.4\] .* assertion p != q: UNKNOWN
10+
^\[main.assertion.5\] .* assertion p != r: UNKNOWN
11+
^\[main.assertion.6\] .* assertion q != r: UNKNOWN
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
--variable-sensitivity --vsd-pointers value-set --verify
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.assertion.1\] .* assertion p == q: FAILURE
7+
^\[main.assertion.2\] .* assertion p == r: FAILURE
8+
^\[main.assertion.3\] .* assertion q == r: FAILURE
9+
^\[main.assertion.4\] .* assertion p != q: SUCCESS
10+
^\[main.assertion.5\] .* assertion p != r: SUCCESS
11+
^\[main.assertion.6\] .* assertion q != r: SUCCESS

0 commit comments

Comments
 (0)