Skip to content

Commit cf40d22

Browse files
authored
Merge pull request #1997 from tautschnig/no-sort-operands
Do not sort operands as part of simplification [blocks: #3486]
2 parents f2fafac + 375f208 commit cf40d22

File tree

17 files changed

+92
-38
lines changed

17 files changed

+92
-38
lines changed
Binary file not shown.

jbmc/regression/jbmc-strings/ConstantEvaluationTrim/Main.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ public void trimRight() {
2424
}
2525

2626
public void noprop(String str) {
27-
str = str.trim();
28-
assert str.equals("abc");
27+
if(str != null) {
28+
str = str.trim();
29+
assert str.equals("abc");
30+
}
2931
}
3032

3133
public void empty() {

jbmc/regression/jbmc-strings/ConstantEvaluationTrim/noprop.desc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ CORE
22
Main
33
--function Main.noprop --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar ../../../lib/java-models-library/target/cprover-api.jar`
44
^Generated [1-9]\d* VCC\(s\), [1-9]\d* remaining after simplification$
5+
line 29 assertion at file Main.java line 29 .*: FAILURE$
6+
^\*\* 1 of \d+ failed
57
^EXIT=10$
68
^SIGNAL=0$
79
^VERIFICATION FAILED$

jbmc/regression/jbmc/throwing-function-return-value/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ CORE
22
Test
33
--function Test.main --show-vcc
44
java::Test\.main:\(Z\)V::14::t1!0@1#\d+ = address_of\(symex_dynamic::dynamic_object\d+\)
5-
java::Test\.main:\(Z\)V::9::x!0@1#\d+ = 5 \+ java::Test\.main:\(Z\)V::9::x!0@1#\d+
5+
java::Test\.main:\(Z\)V::9::x!0@1#\d+ = java::Test\.main:\(Z\)V::9::x!0@1#\d+ \+ 5
66
java::Test\.g:\(\)I#return_value!0#[0-9]+ = 5
77
^EXIT=0$
88
^SIGNAL=0$

regression/cbmc-library/float-nan-check/test.desc

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@ main.c
66
\[main.NaN.3\] line \d+ NaN on / in \(float\)n / myinf: FAILURE
77
\[main.NaN.4\] line \d+ NaN on \* in myinf \* myzero: FAILURE
88
\[main.NaN.5\] line \d+ NaN on \+ in -myinf \+ myinf: FAILURE
9-
\[main.NaN.6\] line \d+ NaN on - in myinf - myinf: FAILURE
10-
\[main.NaN.7\] line \d+ NaN on - in -myinf - -myinf: FAILURE
11-
\[main.NaN.8\] line \d+ NaN on \+ in byte_extract_little_endian\(c, (0|0l|0ll), float\) \+ byte_extract_little_endian\(c, (0|0l|0ll), float\): SUCCESS
12-
\[main.NaN.9\] line \d+ NaN on / in byte_extract_little_endian\(c, (0|0l|0ll), float\) / myzero: SUCCESS
13-
\[main.NaN.10\] line \d+ NaN on \* in mynan \* mynan: SUCCESS
14-
\[main.NaN.11\] line \d+ NaN on \+ in mynan \+ mynan: SUCCESS
15-
\[main.NaN.12\] line \d+ NaN on - in mynan - mynan: SUCCESS
16-
\[main.NaN.13\] line \d+ NaN on / in mynan / mynan: SUCCESS
17-
\[main.NaN.14\] line \d+ NaN on \+ in mynan \+ \(float\)n: SUCCESS
18-
\[main.NaN.15\] line \d+ NaN on - in mynan - \(float\)n: SUCCESS
19-
\[main.NaN.16\] line \d+ NaN on \* in mynan \* \(float\)n: SUCCESS
20-
\[main.NaN.17\] line \d+ NaN on / in mynan / \(float\)n: SUCCESS
9+
\[main.NaN.6\] line \d+ NaN on \+ in myinf \+ -myinf: FAILURE
10+
\[main.NaN.7\] line \d+ NaN on - in myinf - myinf: FAILURE
11+
\[main.NaN.8\] line \d+ NaN on - in -myinf - -myinf: FAILURE
12+
\[main.NaN.9\] line \d+ NaN on \+ in byte_extract_little_endian\(c, (0|0l|0ll), float\) \+ byte_extract_little_endian\(c, (0|0l|0ll), float\): SUCCESS
13+
\[main.NaN.10\] line \d+ NaN on / in byte_extract_little_endian\(c, (0|0l|0ll), float\) / myzero: SUCCESS
14+
\[main.NaN.11\] line \d+ NaN on \* in mynan \* mynan: SUCCESS
15+
\[main.NaN.12\] line \d+ NaN on \+ in mynan \+ mynan: SUCCESS
16+
\[main.NaN.13\] line \d+ NaN on - in mynan - mynan: SUCCESS
17+
\[main.NaN.14\] line \d+ NaN on / in mynan / mynan: SUCCESS
18+
\[main.NaN.15\] line \d+ NaN on \+ in mynan \+ \(float\)n: SUCCESS
19+
\[main.NaN.16\] line \d+ NaN on - in mynan - \(float\)n: SUCCESS
20+
\[main.NaN.17\] line \d+ NaN on \* in mynan \* \(float\)n: SUCCESS
21+
\[main.NaN.18\] line \d+ NaN on / in mynan / \(float\)n: SUCCESS
2122
^EXIT=10$
2223
^SIGNAL=0$
2324
^VERIFICATION FAILED$
2425
--
25-
\[main.NaN.18\]
26+
\[main.NaN.19\]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <assert.h>
2+
#include <math.h>
3+
4+
int main()
5+
{
6+
float a;
7+
float b;
8+
// We could do "if (isnormal(a) && isnormal(b))", but __CPROVER_isnanf(a+b)
9+
// will permit solving this entirely via the simplifier, if, and only if, the
10+
// equality is successfully simplified (despite the different order of
11+
// operands).
12+
assert(__CPROVER_isnanf(a + b) || a + b == b + a);
13+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CORE
2+
main.c
3+
4+
(Starting CEGAR Loop|VCC\(s\), 0 remaining after simplification$)
5+
^VERIFICATION SUCCESSFUL$
6+
^EXIT=0$
7+
^SIGNAL=0$
8+
--
9+
^warning: ignoring
10+
--
11+
This requires simplification of commutative, but not associative operations.

regression/cbmc/array-cell-sensitivity2/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
test.c
33
--show-vcc
4-
main::1::array!0@1#2 = with\(main::1::array!0@1#1, cast\(-1 \+ main::argc!0@1#1, signedbv\[64\]\), 1\)
4+
main::1::array!0@1#2 = with\(main::1::array!0@1#1, cast\(main::argc!0@1#1 \+ -1, signedbv\[64\]\), 1\)
55
main::1::array!0@1#3 = with\(main::1::array!0@1#2, 1, main::argc!0@1#1\)
66
^EXIT=0$
77
^SIGNAL=0$

regression/cbmc/field-sensitivity1/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ CORE
22
test.c
33
--show-vcc
44
main::1::a!0@1#2\.\.x = main::argc!0@1#1
5-
main::1::a!0@1#2\.\.y = 1 \+ main::argc!0@1#1
5+
main::1::a!0@1#2\.\.y = main::argc!0@1#1 \+ 1
66
^EXIT=0$
77
^SIGNAL=0$
88
--

regression/cbmc/field-sensitivity11/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ CORE
22
test.c
33
--show-vcc
44
main::1::a1!0@1#2\.\.x = main::argc!0@1#1
5-
main::1::a1!0@1#2\.\.y = 1 \+ main::argc!0@1#1
5+
main::1::a1!0@1#2\.\.y = main::argc!0@1#1 \+ 1
66
main::1::a2!0@1#2\.\.x = main::1::a1!0@1#2\.\.x
77
main::1::a2!0@1#2\.\.y = main::1::a1!0@1#2\.\.y
88
^EXIT=0$

0 commit comments

Comments
 (0)