Skip to content

Commit 9d0993c

Browse files
authored
Merge pull request #3233 from diffblue/cprover-smt2-2
SMT2 backend testing
2 parents 51236f2 + 4383511 commit 9d0993c

File tree

10 files changed

+353
-4
lines changed

10 files changed

+353
-4
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ install:
354354
script:
355355
- if [ -e bin/gcc ] ; then export PATH=$PWD/bin:$PATH ; fi ;
356356
- env UBSAN_OPTIONS=print_stacktrace=1 make -C regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2
357+
- scripts/delete_failing_smt2_solver_tests ; env UBSAN_OPTIONS=print_stacktrace=1 make -C regression/cbmc test-cprover-smt2
357358
- make -C unit "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2
358359
- make -C unit test
359360
- env UBSAN_OPTIONS=print_stacktrace=1 make -C jbmc/regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2

buildspec.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ phases:
2424
commands:
2525
- make -C unit test
2626
- make -C regression test
27+
- scripts/delete_failing_smt2_solver_tests
28+
- make -C regression/cbmc test-cprover-smt2
2729
- make -C jbmc/unit test
2830
- make -C jbmc/regression test
2931
- echo Build completed on `date`

regression/cbmc/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ default: tests.log
33
test:
44
@../test.pl -p -c ../../../src/cbmc/cbmc -X smt-backend
55

6+
test-cprover-smt2:
7+
@../test.pl -p -c "../../../src/cbmc/cbmc --cprover-smt2"
8+
69
tests.log: ../test.pl
710
@../test.pl -p -c ../../../src/cbmc/cbmc -X smt-backend
811

Lines changed: 317 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
#!/bin/sh
2+
3+
cd regression/cbmc
4+
rm ACSL/operators.desc
5+
rm Address_of2/test.desc
6+
rm Anonymous_Struct3/test.desc
7+
rm Array_Initialization2/test.desc
8+
rm Array_operations1/test.desc
9+
rm Assumption1/test.desc
10+
rm BV_Arithmetic1/test.desc
11+
rm BV_Arithmetic6/test.desc
12+
rm Bitfields1/test.desc
13+
rm Bitfields3/test.desc
14+
rm Bool1/test.desc
15+
rm Bool2/test.desc
16+
rm Bool3/test.desc
17+
rm Boolean_Guards1/test.desc
18+
rm Computed-Goto1/test.desc
19+
rm Division2/test.desc
20+
rm Double-to-float-no-simp1/test.desc
21+
rm Double-to-float-no-simp1-fix1/test.desc
22+
rm Double-to-float-no-simp1-fix2/test.desc
23+
rm Ellipsis2/test.desc
24+
rm Empty_struct1/test.desc
25+
rm Endianness1/test.desc
26+
rm Endianness2/test.desc
27+
rm Endianness3/test.desc
28+
rm Endianness4/test.desc
29+
rm Endianness6/test.desc
30+
rm Endianness7/test.desc
31+
rm Endianness8/test.desc
32+
rm Error_Label1/test.desc
33+
rm Error_Label2/test.desc
34+
rm Error_Label3/test.desc
35+
rm Eval_Order1/test.desc
36+
rm Failing_Assert1/test.desc
37+
rm Fixedbv3/test.desc
38+
rm Fixedbv5/test.desc
39+
rm Fixedbv6/test.desc
40+
rm Fixedbv8/test.desc
41+
rm Float-Rounding1/test.desc
42+
rm Float-div1/test.desc
43+
rm Float-div2/test.desc
44+
rm Float-div3/test.desc
45+
rm Float-flags-no-simp1/test.desc
46+
rm Float-flags-simp1/test.desc
47+
rm Float-no-simp1/test.desc
48+
rm Float-no-simp2/test.desc
49+
rm Float-no-simp3/test.desc
50+
rm Float-no-simp4/test.desc
51+
rm Float-no-simp5/test.desc
52+
rm Float-no-simp6/test.desc
53+
rm Float-no-simp7/test.desc
54+
rm Float-no-simp8/test.desc
55+
rm Float-no-simp9/test.desc
56+
rm Float-overflow2/test.desc
57+
rm Float-smt2-1/test.desc
58+
rm Float-to-double1/test.desc
59+
rm Float-to-double2/test.desc
60+
rm Float-to-int1/test.desc
61+
rm Float-to-int2/test.desc
62+
rm Float-to-int3/test.desc
63+
rm Float-zero-sum1/test.desc
64+
rm Float12/test.desc
65+
rm Float13/test.desc
66+
rm Float19/test.desc
67+
rm Float20/test.desc
68+
rm Float21/test.desc
69+
rm Float22/test.desc
70+
rm Float23/test.desc
71+
rm Float24/test.desc
72+
rm Float3/test.desc
73+
rm Float4/test.desc
74+
rm Float5/test.desc
75+
rm Float6/test.desc
76+
rm Float8/test.desc
77+
rm Free1/test.desc
78+
rm Free2/test.desc
79+
rm Free3/test.desc
80+
rm Free4/test.desc
81+
rm Function1/test.desc
82+
rm Function2/test.desc
83+
rm Function5/test.desc
84+
rm Function8/test.desc
85+
rm Function9/test.desc
86+
rm Function_Eval_Order2/test.desc
87+
rm Function_Pointer15/test.desc
88+
rm Function_Pointer2/test.desc
89+
rm Function_Pointer3/test.desc
90+
rm Function_Pointer6/test.desc
91+
rm Function_Pointer8/test.desc
92+
rm Function_Pointer9/test.desc
93+
rm Initialization5/test.desc
94+
rm Initialization6/test.desc
95+
rm Linking4/test.desc
96+
rm Linking7/test.desc
97+
rm Linking8/test.desc
98+
rm Local_out_of_scope1/test.desc
99+
rm Local_out_of_scope2/test.desc
100+
rm Local_out_of_scope3/test.desc
101+
rm Malloc15/test.desc
102+
rm Malloc17/test.desc
103+
rm Malloc18/test.desc
104+
rm Malloc19/test.desc
105+
rm Malloc20/test.desc
106+
rm Malloc21/test.desc
107+
rm Malloc23/test.desc
108+
rm Malloc24/test.desc
109+
rm Memmove1/test.desc
110+
rm Memory_leak1/test.desc
111+
rm Memory_leak2/test.desc
112+
rm Mod1/test.desc
113+
rm Mod2/test.desc
114+
rm Multi_Dimensional_Array1/test.desc
115+
rm Multi_Dimensional_Array2/test.desc
116+
rm Multi_Dimensional_Array3/test.desc
117+
rm Multi_Dimensional_Array4/test.desc
118+
rm Multi_Dimensional_Array6/test.desc
119+
rm Multiple_Properties1/test.desc
120+
rm Negation2/test.desc
121+
rm Overflow_Addition1/test.desc
122+
rm Overflow_Leftshift1/test.desc
123+
rm Overflow_Multiplication1/test.desc
124+
rm Overflow_Subtraction1/test.desc
125+
rm Pointer_Arithmetic1/test.desc
126+
rm Pointer_Arithmetic10/test.desc
127+
rm Pointer_Arithmetic11/test.desc
128+
rm Pointer_Arithmetic12/test.desc
129+
rm Pointer_Arithmetic5/test.desc
130+
rm Pointer_Arithmetic6/test.desc
131+
rm Pointer_Arithmetic8/test.desc
132+
rm Pointer_array1/test.desc
133+
rm Pointer_array2/test.desc
134+
rm Pointer_array3/test.desc
135+
rm Pointer_array4/test.desc
136+
rm Pointer_array5/test.desc
137+
rm Pointer_array6/test.desc
138+
rm Pointer_byte_extract1/test.desc
139+
rm Pointer_byte_extract2/test.desc
140+
rm Pointer_byte_extract3/test.desc
141+
rm Pointer_byte_extract4/test.desc
142+
rm Pointer_byte_extract5/no-simplify.desc
143+
rm Pointer_byte_extract5/test.desc
144+
rm Pointer_byte_extract7/test.desc
145+
rm Pointer_byte_extract9/test.desc
146+
rm Pointer_difference1/test.desc
147+
rm Promotion3/test.desc
148+
rm Promotion4/test.desc
149+
rm Quantifiers-assertion/test.desc
150+
rm Quantifiers-assignment/test.desc
151+
rm Quantifiers-copy/test.desc
152+
rm Quantifiers-if/test.desc
153+
rm Quantifiers-initialisation/test.desc
154+
rm Quantifiers-initialisation2/test.desc
155+
rm Quantifiers-invalid-var-range/test.desc
156+
rm Quantifiers-not/test.desc
157+
rm Quantifiers-not-exists/test.desc
158+
rm Quantifiers-two-dimension-array/test.desc
159+
rm Quantifiers-type/test.desc
160+
rm Quantifiers1/test.desc
161+
rm Recursion4/test.desc
162+
rm Recursion5/test.desc
163+
rm Sideeffects5/test.desc
164+
rm Sideeffects6/test.desc
165+
rm String2/test.desc
166+
rm String6/test.desc
167+
rm Struct_Bytewise1/test.desc
168+
rm Struct_Bytewise2/test.desc
169+
rm Struct_Initialization2/test.desc
170+
rm Struct_Initialization5/test.desc
171+
rm Struct_Padding1/test.desc
172+
rm Typecast1/test.desc
173+
rm Typecast2/test.desc
174+
rm Undefined_Function1/test.desc
175+
rm Undefined_Function2/test.desc
176+
rm Undefined_Shift1/test.desc
177+
rm Union_Initialization1/test.desc
178+
rm Unwinding_Locality1/test.desc
179+
rm abs1/test.desc
180+
rm address_space_size_limit1/test.desc
181+
rm address_space_size_limit3/test.desc
182+
rm argv1/test.desc
183+
rm array-tests/test.desc
184+
rm atomic_section_seq1/test.desc
185+
rm big-endian-array1/test.desc
186+
rm bounds_check1/test.desc
187+
rm byte_update1/test.desc
188+
rm byte_update2/test.desc
189+
rm byte_update3/test.desc
190+
rm byte_update4/test.desc
191+
rm byte_update5/test.desc
192+
rm byte_update6/test.desc
193+
rm byte_update7/test.desc
194+
rm byte_update8/test.desc
195+
rm byte_update9/test.desc
196+
rm c99_Bool/test.desc
197+
rm cprover_bool1/test.desc
198+
rm divide-by-one-simplify/test.desc
199+
rm dynamic_size1/stack_object.desc
200+
rm dynamic_size1/test.desc
201+
rm dynamic_sizeof1/test.desc
202+
rm enum3/test.desc
203+
rm enum5/test.desc
204+
rm equality_through_array1/test.desc
205+
rm equality_through_array2/test.desc
206+
rm equality_through_array3/test.desc
207+
rm equality_through_array4/test.desc
208+
rm equality_through_array5/test.desc
209+
rm equality_through_array6/test.desc
210+
rm equality_through_array_of_struct1/test.desc
211+
rm equality_through_array_of_struct2/test.desc
212+
rm equality_through_array_of_struct3/test.desc
213+
rm equality_through_array_of_struct4/test.desc
214+
rm equality_through_struct1/test.desc
215+
rm equality_through_struct2/test.desc
216+
rm equality_through_struct3/test.desc
217+
rm equality_through_struct4/test.desc
218+
rm equality_through_struct5/test.desc
219+
rm equality_through_struct_containing_arrays1/test.desc
220+
rm equality_through_struct_containing_arrays2/test.desc
221+
rm equality_through_struct_containing_arrays3/test.desc
222+
rm equality_through_union1/test.desc
223+
rm equality_through_union2/test.desc
224+
rm equality_through_union3/test.desc
225+
rm exit1/test.desc
226+
rm extern_initialization1/test.desc
227+
rm fgets1/test.desc
228+
rm for2/test.desc
229+
rm full_slice1/test.desc
230+
rm full_slice2/test.desc
231+
rm gcc_bswap1/test.desc
232+
rm gcc_c99-bool-1/test.desc
233+
rm gcc_local_label1/test.desc
234+
rm gcc_popcount1/test.desc
235+
rm gcc_statement_expression4/test.desc
236+
rm gcc_switch_case_range1/test.desc
237+
rm gcc_switch_case_range2/test.desc
238+
rm gcc_vector1/test.desc
239+
rm gcc_vector2/test.desc
240+
rm getenv-overflow1/test.desc
241+
rm goto1/test.desc
242+
rm goto2/test.desc
243+
rm goto4/test.desc
244+
rm goto5/test.desc
245+
rm graphml_witness1/test.desc
246+
rm havoc_object1/test.desc
247+
rm hex_trace/test.desc
248+
rm if1/test.desc
249+
rm if2/test.desc
250+
rm if3/test.desc
251+
rm if4/test.desc
252+
rm inet_endian1/test.desc
253+
rm int-to-float2/test.desc
254+
rm integer-assignments1/test.desc
255+
rm json1/test.desc
256+
rm little-endian-array1/test.desc
257+
rm member1/test.desc
258+
rm memcpy1/test.desc
259+
rm memcpy2/test.desc
260+
rm memcpy3/test.desc
261+
rm memory_allocation1/test.desc
262+
rm memset1/test.desc
263+
rm memset3/test.desc
264+
rm mm_io1/test.desc
265+
rm no_nondet_static/test.desc
266+
rm null1/test.desc
267+
rm null2/test.desc
268+
rm path-per-path-vccs/test.desc
269+
rm pipe1/test.desc
270+
rm pointer-extra-checks/test.desc
271+
rm pointer-function-parameters/test.desc
272+
rm pointer-function-parameters-2/test.desc
273+
rm posix_memalign/test.desc
274+
rm printf1/test.desc
275+
rm read1/test.desc
276+
rm realloc1/test.desc
277+
rm realloc2/test.desc
278+
rm return2/test.desc
279+
rm return5/test.desc
280+
rm scanf1/test.desc
281+
rm self_loops_to_assumptions1/no-assume.desc
282+
rm simple_assert/test.desc
283+
rm stack-trace/test.desc
284+
rm strcat1/test.desc
285+
rm struct1/test.desc
286+
rm struct10/test.desc
287+
rm struct3/test.desc
288+
rm struct6/test.desc
289+
rm struct7/test.desc
290+
rm struct8/test.desc
291+
rm struct9/test.desc
292+
rm switch1/test.desc
293+
rm switch2/test.desc
294+
rm switch3/test.desc
295+
rm switch4/test.desc
296+
rm switch5/test.desc
297+
rm trace_address_arithmetic1/test.desc
298+
rm trace-values/trace-values.desc
299+
rm trace_options_json_extended/extended.desc
300+
rm trace_options_json_extended/non-extended.desc
301+
rm trace_show_code/test.desc
302+
rm trace_show_function_calls/test.desc
303+
rm uncaught_exceptions_analysis1/test.desc
304+
rm union11/union_list.desc
305+
rm union3/test.desc
306+
rm union5/test.desc
307+
rm union6/test.desc
308+
rm union7/test.desc
309+
rm union8/test.desc
310+
rm union9/test.desc
311+
rm unsigned___int128/test.desc
312+
rm unwind_counters2/test.desc
313+
rm unwind_counters3/test.desc
314+
rm variable-access-to-constant-array/test.desc
315+
rm void_pointer2/test.desc
316+
rm void_pointer3/test.desc
317+
rm while1/test.desc

src/cbmc/cbmc_parse_options.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,12 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options)
327327
options.set_option("smt2", true);
328328
}
329329

330+
if(cmdline.isset("cprover-smt2"))
331+
{
332+
options.set_option("cprover-smt2", true), solver_set = true;
333+
options.set_option("smt2", true);
334+
}
335+
330336
if(cmdline.isset("mathsat"))
331337
{
332338
options.set_option("mathsat", true), solver_set=true;
@@ -955,8 +961,9 @@ void cbmc_parse_optionst::help()
955961
" --localize-faults localize faults (experimental)\n"
956962
" --smt2 use default SMT2 solver (Z3)\n"
957963
" --boolector use Boolector\n"
958-
" --mathsat use MathSAT\n"
964+
" --cprover-smt2 use CPROVER SMT2 solver\n"
959965
" --cvc4 use CVC4\n"
966+
" --mathsat use MathSAT\n"
960967
" --yices use Yices\n"
961968
" --z3 use Z3\n"
962969
" --refine use refinement procedure (experimental)\n"

src/cbmc/cbmc_parse_options.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class optionst;
4747
"(no-assertions)(no-assumptions)" \
4848
"(xml-ui)(xml-interface)(json-ui)" \
4949
"(smt1)(smt2)(fpa)(cvc3)(cvc4)(boolector)(yices)(z3)(opensmt)(mathsat)" \
50+
"(cprover-smt2)" \
5051
"(no-sat-preprocessor)" \
5152
"(beautify)" \
5253
"(dimacs)(refine)(max-node-refinement):(refine-arrays)(refine-arithmetic)"\

src/cbmc/cbmc_solvers.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ smt2_dect::solvert cbmc_solverst::get_smt2_solver_type() const
4141

4242
if(options.get_bool_option("boolector"))
4343
s=smt2_dect::solvert::BOOLECTOR;
44+
else if(options.get_bool_option("cprover-smt2"))
45+
s = smt2_dect::solvert::CPROVER_SMT2;
4446
else if(options.get_bool_option("mathsat"))
4547
s=smt2_dect::solvert::MATHSAT;
4648
else if(options.get_bool_option("cvc3"))

0 commit comments

Comments
 (0)