From 01fd5ea12977c51333845cabf26a0d9acb865556 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 7 Mar 2023 13:36:51 +0000 Subject: [PATCH 1/2] De-duplicate contracts regression tests Reduce the maintenance burden by using tags to run contracts tests both with and without DFCC. A first round of filtering was done as follows: ``` cd regression/contracts-dfcc ; sed -i '1s/$/ dfcc-only/' */*.desc cd ../contracts for d in * ; do [ -d $d ] || continue [ -d ../contracts-dfcc/$d ] || continue cp -a ../contracts-dfcc/$d ../contracts-dfcc/X.$d sed -i '1s/ dfcc-only$//' ../contracts-dfcc/X.$d/*.desc sed -i '3s/--dfcc main //' ../contracts-dfcc/X.$d/*.desc if diff -urN $d ../contracts-dfcc/X.$d ; then sed -i '1s/ dfcc-only$//' ../contracts-dfcc/$d/*.desc git rm -r $d fi rm -r ../contracts-dfcc/X.$d done ``` --- regression/contracts-dfcc/CMakeLists.txt | 13 +- regression/contracts-dfcc/Makefile | 7 +- .../assigns-enforce-malloc-zero/test.desc | 2 +- .../assigns-local-composite/test.desc | 2 +- .../test.desc | 2 +- .../assigns-replace-malloc-zero/test.desc | 2 +- .../assigns_enforce_02/test.desc | 2 +- .../assigns_enforce_03/test.desc | 2 +- .../assigns_enforce_04/test.desc | 2 +- .../assigns_enforce_05/test.desc | 2 +- .../assigns_enforce_06/test.desc | 2 +- .../assigns_enforce_07/test.desc | 2 +- .../assigns_enforce_08/test.desc | 2 +- .../assigns_enforce_09/test.desc | 2 +- .../assigns_enforce_10/test.desc | 2 +- .../assigns_enforce_11/test.desc | 2 +- .../assigns_enforce_15/test-baz.desc | 2 +- .../assigns_enforce_15/test-foo.desc | 2 +- .../assigns_enforce_15/test-qux.desc | 2 +- .../assigns_enforce_18/test-bar.desc | 2 +- .../assigns_enforce_18/test-baz.desc | 2 +- .../assigns_enforce_18/test-foo.desc | 2 +- .../assigns_enforce_19_a/test.desc | 2 +- .../assigns_enforce_19_b/test.desc | 2 +- .../assigns_enforce_20/test.desc | 2 +- .../assigns_enforce_21/test.desc | 2 +- .../assigns_enforce_arrays_02/test-f1.desc | 2 +- .../assigns_enforce_arrays_02/test-f2.desc | 2 +- .../assigns_enforce_arrays_05/test.desc | 2 +- .../assigns_enforce_arrays_10/test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../assigns_enforce_free_dead/test.desc | 2 +- .../test.desc | 2 +- .../assigns_enforce_havoc_object/test.desc | 2 +- .../assigns_enforce_malloc_02/test.desc | 2 +- .../assigns_enforce_multi_file_02/test.desc | 2 +- .../assigns_enforce_offsets_2/test.desc | 2 +- .../assigns_enforce_offsets_4/test.desc | 2 +- .../assigns_enforce_scoping_01/test.desc | 2 +- .../assigns_enforce_scoping_02/test.desc | 2 +- .../assigns_enforce_statics/test.desc | 2 +- .../assigns_enforce_structs_04/test-f1.desc | 2 +- .../assigns_enforce_structs_04/test-f2.desc | 2 +- .../assigns_enforce_structs_04/test-f3.desc | 2 +- .../assigns_enforce_structs_04/test-f4.desc | 2 +- .../assigns_enforce_structs_06/test-f1.desc | 2 +- .../assigns_enforce_structs_06/test-f2.desc | 2 +- .../assigns_enforce_structs_06/test-f3.desc | 2 +- .../assigns_enforce_structs_07/test-f1.desc | 2 +- .../assigns_enforce_structs_07/test-f2.desc | 2 +- .../assigns_enforce_structs_08/test-f1.desc | 2 +- .../assigns_enforce_structs_08/test-f2.desc | 2 +- .../test.desc | 2 +- .../assigns_repeated_ignored/test.desc | 2 +- .../assigns_replace_02/test.desc | 2 +- .../assigns_replace_08/test.desc | 2 +- .../assigns_replace_09/test.desc | 2 +- .../enforce.desc | 2 +- .../replace.desc | 2 +- .../enforce.desc | 2 +- .../replace.desc | 2 +- .../test-foo1.desc | 2 +- .../test-foo10.desc | 2 +- .../test-foo2.desc | 2 +- .../test-foo3.desc | 2 +- .../test-foo4.desc | 2 +- .../test-foo5.desc | 2 +- .../test-foo6.desc | 2 +- .../test-foo7.desc | 2 +- .../test-foo8.desc | 2 +- .../test-foo9.desc | 2 +- .../assigns_validity_pointer_02/test.desc | 2 +- regression/contracts-dfcc/chain.sh | 16 +- .../test.desc | 2 +- .../cprover-assignable-fail/test.desc | 2 +- .../cprover-assignable-pass/test.desc | 2 +- .../enforce.desc | 2 +- .../replace.desc | 2 +- .../frees-clause-and-predicates/test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test-enf-f-repl-g.desc | 2 +- .../function-calls-02-failure/test-enf-f.desc | 2 +- .../function-calls-02-failure/test-enf-g.desc | 2 +- .../test-enf-f-repl-g.desc | 2 +- .../function-calls-02-success/test-enf-f.desc | 2 +- .../function-calls-02-success/test-enf-g.desc | 2 +- .../test-norec.desc | 2 +- .../test-rec.desc | 2 +- .../test-enf-even-repl-odd.desc | 2 +- .../test-enf-even.desc | 2 +- .../test-enf-odd-repl-even.desc | 2 +- .../test-enf-odd.desc | 2 +- .../test-enf-rec-even.desc | 2 +- .../test-enf-rec-odd.desc | 2 +- .../test-enf-even-repl-odd.desc | 2 +- .../test-enf-even.desc | 2 +- .../test-enf-odd-repl-even.desc | 2 +- .../test-enf-odd.desc | 2 +- .../test-enf-rec-even.desc | 2 +- .../test-enf-rec-odd.desc | 2 +- .../test-unwind.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test-replace.desc | 2 +- .../test-unwind.desc | 2 +- .../test.desc | 2 +- .../test-enforce-fail-contract.desc | 2 +- .../test-enforce-fail-function.desc | 2 +- .../test-enforce-fail-too-many.desc | 2 +- .../test-enforce-pass.desc | 2 +- .../test-enforce-replace-pass.desc | 2 +- .../test-enforce-warning-not-found.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../function_check_01/test.desc | 2 +- .../function_check_03/test.desc | 2 +- .../function_check_04/test.desc | 2 +- .../function_check_05/test.desc | 2 +- .../function_check_mem_01/test.desc | 2 +- .../havoc-conditional-target/check-foo.desc | 2 +- .../havoc-conditional-target/replace-foo.desc | 2 +- .../history-pointer-enforce-09/test.desc | 2 +- .../history-pointer-enforce-10/test-bar.desc | 2 +- .../history-pointer-enforce-10/test-baz.desc | 2 +- .../history-pointer-enforce-10/test-foo.desc | 2 +- .../history-pointer-replace-01/test.desc | 2 +- .../history-pointer-replace-02/test.desc | 2 +- .../history-pointer-replace-03/test.desc | 2 +- .../history-pointer-replace-04/test.desc | 2 +- .../is_fresh_indirect_calls/test.desc | 2 +- .../is_unique_01_replace/test.desc | 2 +- .../loop-freeness-check/test.desc | 2 +- .../test-fail-assert-bounded.desc | 2 +- .../test-fail-assert.desc | 2 +- .../test-fail-none-bounded.desc | 2 +- .../test-fail-none.desc | 2 +- .../test-fail-null-bounded.desc | 2 +- .../test-fail-null.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../missing-function-body/test.desc | 2 +- .../no_redudant_checks/test.desc | 2 +- .../quantifiers-exists-both-enforce/test.desc | 2 +- .../quantifiers-exists-both-replace/test.desc | 2 +- .../test-f1.desc | 2 +- .../test-f2.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../quantifiers-forall-both-enforce/test.desc | 2 +- .../quantifiers-forall-both-replace/test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../quantifiers-nested-03/test.desc | 2 +- .../replace-nondet-return-value/test.desc | 2 +- .../test_aliasing_enforce/test.desc | 2 +- .../test_aliasing_ensure/test.desc | 2 +- .../test-bar.desc | 2 +- .../test-foo.desc | 2 +- .../test_aliasing_replace/test.desc | 2 +- .../test_array_memory_enforce/test.desc | 2 +- .../test_array_memory_replace/test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test-enforce.desc | 2 +- .../test-replace.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test.desc | 2 +- .../test_possibly_aliased_arguments/test.desc | 2 +- .../test_scalar_memory_enforce/test.desc | 2 +- .../test_scalar_memory_replace/test.desc | 2 +- .../test_struct_enforce/test.desc | 2 +- .../test_struct_member_enforce/test.desc | 2 +- .../test_struct_replace/test.desc | 2 +- .../assigns-slice-targets/main-enforce.c | 67 -------- .../assigns-slice-targets/main-replace.c | 150 ------------------ .../assigns-slice-targets/test-enforce.desc | 38 ----- .../assigns-slice-targets/test-replace.desc | 57 ------- .../contracts/assigns_enforce_01/main.c | 14 -- .../contracts/assigns_enforce_01/test.desc | 13 -- .../contracts/assigns_enforce_12/main.c | 13 -- .../contracts/assigns_enforce_12/test.desc | 9 -- .../contracts/assigns_enforce_13/main.c | 14 -- .../contracts/assigns_enforce_13/test.desc | 9 -- .../contracts/assigns_enforce_14/main.c | 19 --- .../contracts/assigns_enforce_14/test.desc | 13 -- .../contracts/assigns_enforce_16/main.c | 16 -- .../contracts/assigns_enforce_16/test.desc | 10 -- .../contracts/assigns_enforce_17/main.c | 17 -- .../contracts/assigns_enforce_17/test.desc | 11 -- .../contracts/assigns_enforce_23/main.c | 41 ----- .../contracts/assigns_enforce_23/test.desc | 9 -- .../assigns_enforce_address_of/main.c | 16 -- .../assigns_enforce_address_of/test.desc | 10 -- .../assigns_enforce_arrays_01/main.c | 16 -- .../assigns_enforce_arrays_01/test.desc | 10 -- .../assigns_enforce_arrays_03/main.c | 12 -- .../assigns_enforce_arrays_03/test.desc | 11 -- .../assigns_enforce_arrays_04/main.c | 19 --- .../assigns_enforce_arrays_04/test.desc | 11 -- .../main.c | 21 --- .../test.desc | 10 -- .../main.c | 21 --- .../test.desc | 10 -- .../main.c | 20 --- .../test.desc | 10 -- .../main.c | 16 -- .../test.desc | 10 -- .../main.c | 16 -- .../test.desc | 10 -- .../main.c | 16 -- .../test.desc | 10 -- .../main.c | 16 -- .../test.desc | 10 -- .../main.c | 15 -- .../test.desc | 10 -- .../main.c | 16 -- .../test.desc | 10 -- .../assigns_enforce_function_calls/main.c | 16 -- .../assigns_enforce_function_calls/test.desc | 10 -- .../main.c | 17 -- .../test.desc | 10 -- .../contracts/assigns_enforce_literal/main.c | 16 -- .../assigns_enforce_literal/test.desc | 10 -- .../assigns_enforce_malloc_01/main.c | 15 -- .../assigns_enforce_malloc_01/test.desc | 12 -- .../assigns_enforce_malloc_03/main.c | 18 --- .../assigns_enforce_malloc_03/test.desc | 11 -- .../assigns_enforce_multi_file_01/header.h | 22 --- .../assigns_enforce_multi_file_01/main.c | 11 -- .../assigns_enforce_multi_file_01/test.desc | 10 -- .../assigns_enforce_object_wrong_args/main.c | 15 -- .../test.desc | 10 -- .../assigns_enforce_offsets_1/main.c | 17 -- .../assigns_enforce_offsets_1/test.desc | 10 -- .../assigns_enforce_offsets_3/main.c | 20 --- .../assigns_enforce_offsets_3/test.desc | 9 -- .../assigns_enforce_side_effects_1/main.c | 26 --- .../assigns_enforce_side_effects_1/test.desc | 12 -- .../assigns_enforce_side_effects_2/main.c | 17 -- .../assigns_enforce_side_effects_2/test.desc | 10 -- .../assigns_enforce_side_effects_3/main.c | 17 -- .../assigns_enforce_side_effects_3/test.desc | 10 -- .../assigns_enforce_structs_01/main.c | 22 --- .../assigns_enforce_structs_01/test.desc | 13 -- .../assigns_enforce_structs_02/main.c | 29 ---- .../assigns_enforce_structs_02/test.desc | 13 -- .../assigns_enforce_structs_03/main.c | 29 ---- .../assigns_enforce_structs_03/test.desc | 14 -- .../assigns_enforce_structs_05/main.c | 27 ---- .../assigns_enforce_structs_05/test.desc | 16 -- .../contracts/assigns_function_pointer/main.c | 38 ----- .../assigns_function_pointer/test.desc | 13 -- .../contracts/assigns_replace_01/main.c | 15 -- .../contracts/assigns_replace_01/test.desc | 11 -- .../contracts/assigns_replace_03/main.c | 18 --- .../contracts/assigns_replace_03/test.desc | 9 -- .../contracts/assigns_replace_04/main.c | 34 ---- .../contracts/assigns_replace_04/test.desc | 16 -- .../contracts/assigns_replace_05/main.c | 34 ---- .../contracts/assigns_replace_05/test.desc | 16 -- .../contracts/assigns_replace_06/main.c | 32 ---- .../contracts/assigns_replace_06/test.desc | 19 --- .../contracts/assigns_replace_07/main.c | 24 --- .../contracts/assigns_replace_07/test.desc | 13 -- .../main.c | 74 --------- .../test.desc | 19 --- .../main.c | 11 -- .../test.desc | 9 -- .../main.c | 33 ---- .../test.desc | 19 --- .../assigns_validity_pointer_01/main.c | 36 ----- .../assigns_validity_pointer_01/test.desc | 25 --- .../assigns_validity_pointer_03/main.c | 33 ---- .../assigns_validity_pointer_03/test.desc | 28 ---- .../assigns_validity_pointer_04/main.c | 34 ---- .../assigns_validity_pointer_04/test.desc | 21 --- .../embedded_contract_fail_01/main.c | 18 --- .../embedded_contract_fail_01/test.desc | 12 -- .../embedded_contract_fail_02/main.c | 18 --- .../embedded_contract_fail_02/test.desc | 12 -- regression/contracts/entry_point/main.c | 9 -- regression/contracts/entry_point/test.desc | 10 -- .../frees-clause-and-predicates-fail/main.c | 45 ------ .../test.desc | 10 -- .../frees-clause-and-predicates-fail2/main.c | 44 ----- .../test.desc | 11 -- .../main.c | 13 -- .../test.desc | 10 -- .../main.c | 15 -- .../test.desc | 10 -- regression/contracts/function_apply_01/main.c | 19 --- .../contracts/function_apply_01/test.desc | 12 -- regression/contracts/function_check_02/main.c | 36 ----- .../contracts/function_check_02/test.desc | 10 -- .../function_loop_history_ensures_fail/main.c | 13 -- .../test.desc | 10 -- .../main.c | 13 -- .../test.desc | 10 -- .../contracts/function_no_apply_01/main.c | 19 --- .../contracts/function_no_apply_01/test.desc | 12 -- regression/contracts/havoc-static/main.c | 20 --- .../contracts/havoc-static/test-exclude.desc | 12 -- regression/contracts/havoc-static/test.desc | 13 -- regression/contracts/history-constant/main.c | 15 -- .../contracts/history-constant/test.desc | 10 -- .../contracts/history-pointer-both-01/main.c | 20 --- .../history-pointer-both-01/test.desc | 12 -- .../history-pointer-enforce-01/main.c | 13 -- .../history-pointer-enforce-01/test.desc | 13 -- .../history-pointer-enforce-02/main.c | 13 -- .../history-pointer-enforce-02/test.desc | 13 -- .../history-pointer-enforce-03/main.c | 16 -- .../history-pointer-enforce-03/test.desc | 14 -- .../history-pointer-enforce-04/main.c | 15 -- .../history-pointer-enforce-04/test.desc | 14 -- .../history-pointer-enforce-05/main.c | 14 -- .../history-pointer-enforce-05/test.desc | 14 -- .../history-pointer-enforce-06/main.c | 16 -- .../history-pointer-enforce-06/test.desc | 12 -- .../history-pointer-enforce-07/main.c | 13 -- .../history-pointer-enforce-07/test.desc | 14 -- .../history-pointer-enforce-08/main.c | 24 --- .../history-pointer-enforce-08/test.desc | 13 -- .../history-pointer-enforce-11/main.c | 23 --- .../history-pointer-enforce-11/test.desc | 13 -- regression/contracts/history-typecast/main.c | 23 --- .../contracts/history-typecast/test.desc | 10 -- .../contracts/ignored_return_value/main.c | 14 -- .../contracts/ignored_return_value/test.desc | 12 -- .../main-contract-after-declaration.c | 28 ---- .../main-contract-after-definition.c | 26 --- .../main-contract-incomplete.c | 22 --- .../main-contract-signature-conflict.c | 30 ---- .../main-definition-after-contract.c | 26 --- .../named-contracts/main-no-definition.c | 28 ---- .../test-contract-after-declaration.desc | 10 -- .../test-contract-after-definition.desc | 10 -- .../test-contract-incomplete.desc | 10 -- .../test-contract-signature-conflict.desc | 10 -- .../test-definition-after-contract.desc | 11 -- .../named-contracts/test-no-definition.desc | 10 -- .../quantifiers-exists-ensures-replace/main.c | 41 ----- .../test.desc | 14 -- .../quantifiers-forall-ensures-replace/main.c | 30 ---- .../test.desc | 16 -- .../contracts/quantifiers-nested-01/main.c | 32 ---- .../contracts/quantifiers-nested-01/test.desc | 11 -- .../contracts/quantifiers-nested-02/main.c | 23 --- .../contracts/quantifiers-nested-02/test.desc | 11 -- .../contracts/quantifiers-nested-04/main.c | 26 --- .../contracts/quantifiers-nested-04/test.desc | 11 -- .../contracts/quantifiers-nested-05/main.c | 21 --- .../contracts/quantifiers-nested-05/test.desc | 11 -- .../contracts/quantifiers-nested-06/main.c | 38 ----- .../contracts/quantifiers-nested-06/test.desc | 11 -- .../main.c | 11 -- .../test.desc | 11 -- .../main.c | 11 -- .../test.desc | 11 -- .../main.c | 10 -- .../test.desc | 11 -- .../main.c | 10 -- .../test.desc | 11 -- .../contracts/trivial_contract_enforce/main.c | 14 -- .../trivial_contract_enforce/test.desc | 12 -- .../contracts/trivial_contract_replace/main.c | 13 -- .../trivial_contract_replace/test.desc | 12 -- .../main.c | 10 -- .../test.desc | 11 -- .../contracts/typed_target_pointer/main.c | 13 -- .../contracts/typed_target_pointer/test.desc | 14 -- regression/contracts/used_return_value/main.c | 17 -- .../contracts/used_return_value/test.desc | 8 - 402 files changed, 228 insertions(+), 3772 deletions(-) delete mode 100644 regression/contracts/assigns-slice-targets/main-enforce.c delete mode 100644 regression/contracts/assigns-slice-targets/main-replace.c delete mode 100644 regression/contracts/assigns-slice-targets/test-enforce.desc delete mode 100644 regression/contracts/assigns-slice-targets/test-replace.desc delete mode 100644 regression/contracts/assigns_enforce_01/main.c delete mode 100644 regression/contracts/assigns_enforce_01/test.desc delete mode 100644 regression/contracts/assigns_enforce_12/main.c delete mode 100644 regression/contracts/assigns_enforce_12/test.desc delete mode 100644 regression/contracts/assigns_enforce_13/main.c delete mode 100644 regression/contracts/assigns_enforce_13/test.desc delete mode 100644 regression/contracts/assigns_enforce_14/main.c delete mode 100644 regression/contracts/assigns_enforce_14/test.desc delete mode 100644 regression/contracts/assigns_enforce_16/main.c delete mode 100644 regression/contracts/assigns_enforce_16/test.desc delete mode 100644 regression/contracts/assigns_enforce_17/main.c delete mode 100644 regression/contracts/assigns_enforce_17/test.desc delete mode 100644 regression/contracts/assigns_enforce_23/main.c delete mode 100644 regression/contracts/assigns_enforce_23/test.desc delete mode 100644 regression/contracts/assigns_enforce_address_of/main.c delete mode 100644 regression/contracts/assigns_enforce_address_of/test.desc delete mode 100644 regression/contracts/assigns_enforce_arrays_01/main.c delete mode 100644 regression/contracts/assigns_enforce_arrays_01/test.desc delete mode 100644 regression/contracts/assigns_enforce_arrays_03/main.c delete mode 100644 regression/contracts/assigns_enforce_arrays_03/test.desc delete mode 100644 regression/contracts/assigns_enforce_arrays_04/main.c delete mode 100644 regression/contracts/assigns_enforce_arrays_04/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_non_lvalue_target/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_non_lvalue_target/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_condition/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_condition/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_target/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_target/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_target_list/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_side_effect_target_list/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_ternary_target/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_ternary_target/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_ternary_target_list/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_ternary_target_list/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_void_target/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_void_target/test.desc delete mode 100644 regression/contracts/assigns_enforce_conditional_void_target_list/main.c delete mode 100644 regression/contracts/assigns_enforce_conditional_void_target_list/test.desc delete mode 100644 regression/contracts/assigns_enforce_function_calls/main.c delete mode 100644 regression/contracts/assigns_enforce_function_calls/test.desc delete mode 100644 regression/contracts/assigns_enforce_function_calls_ignored/main.c delete mode 100644 regression/contracts/assigns_enforce_function_calls_ignored/test.desc delete mode 100644 regression/contracts/assigns_enforce_literal/main.c delete mode 100644 regression/contracts/assigns_enforce_literal/test.desc delete mode 100644 regression/contracts/assigns_enforce_malloc_01/main.c delete mode 100644 regression/contracts/assigns_enforce_malloc_01/test.desc delete mode 100644 regression/contracts/assigns_enforce_malloc_03/main.c delete mode 100644 regression/contracts/assigns_enforce_malloc_03/test.desc delete mode 100644 regression/contracts/assigns_enforce_multi_file_01/header.h delete mode 100644 regression/contracts/assigns_enforce_multi_file_01/main.c delete mode 100644 regression/contracts/assigns_enforce_multi_file_01/test.desc delete mode 100644 regression/contracts/assigns_enforce_object_wrong_args/main.c delete mode 100644 regression/contracts/assigns_enforce_object_wrong_args/test.desc delete mode 100644 regression/contracts/assigns_enforce_offsets_1/main.c delete mode 100644 regression/contracts/assigns_enforce_offsets_1/test.desc delete mode 100644 regression/contracts/assigns_enforce_offsets_3/main.c delete mode 100644 regression/contracts/assigns_enforce_offsets_3/test.desc delete mode 100644 regression/contracts/assigns_enforce_side_effects_1/main.c delete mode 100644 regression/contracts/assigns_enforce_side_effects_1/test.desc delete mode 100644 regression/contracts/assigns_enforce_side_effects_2/main.c delete mode 100644 regression/contracts/assigns_enforce_side_effects_2/test.desc delete mode 100644 regression/contracts/assigns_enforce_side_effects_3/main.c delete mode 100644 regression/contracts/assigns_enforce_side_effects_3/test.desc delete mode 100644 regression/contracts/assigns_enforce_structs_01/main.c delete mode 100644 regression/contracts/assigns_enforce_structs_01/test.desc delete mode 100644 regression/contracts/assigns_enforce_structs_02/main.c delete mode 100644 regression/contracts/assigns_enforce_structs_02/test.desc delete mode 100644 regression/contracts/assigns_enforce_structs_03/main.c delete mode 100644 regression/contracts/assigns_enforce_structs_03/test.desc delete mode 100644 regression/contracts/assigns_enforce_structs_05/main.c delete mode 100644 regression/contracts/assigns_enforce_structs_05/test.desc delete mode 100644 regression/contracts/assigns_function_pointer/main.c delete mode 100644 regression/contracts/assigns_function_pointer/test.desc delete mode 100644 regression/contracts/assigns_replace_01/main.c delete mode 100644 regression/contracts/assigns_replace_01/test.desc delete mode 100644 regression/contracts/assigns_replace_03/main.c delete mode 100644 regression/contracts/assigns_replace_03/test.desc delete mode 100644 regression/contracts/assigns_replace_04/main.c delete mode 100644 regression/contracts/assigns_replace_04/test.desc delete mode 100644 regression/contracts/assigns_replace_05/main.c delete mode 100644 regression/contracts/assigns_replace_05/test.desc delete mode 100644 regression/contracts/assigns_replace_06/main.c delete mode 100644 regression/contracts/assigns_replace_06/test.desc delete mode 100644 regression/contracts/assigns_replace_07/main.c delete mode 100644 regression/contracts/assigns_replace_07/test.desc delete mode 100644 regression/contracts/assigns_replace_conditional_targets/main.c delete mode 100644 regression/contracts/assigns_replace_conditional_targets/test.desc delete mode 100644 regression/contracts/assigns_type_checking_invalid_case_01/main.c delete mode 100644 regression/contracts/assigns_type_checking_invalid_case_01/test.desc delete mode 100644 regression/contracts/assigns_type_checking_invalid_case_02/main.c delete mode 100644 regression/contracts/assigns_type_checking_invalid_case_02/test.desc delete mode 100644 regression/contracts/assigns_validity_pointer_01/main.c delete mode 100644 regression/contracts/assigns_validity_pointer_01/test.desc delete mode 100644 regression/contracts/assigns_validity_pointer_03/main.c delete mode 100644 regression/contracts/assigns_validity_pointer_03/test.desc delete mode 100644 regression/contracts/assigns_validity_pointer_04/main.c delete mode 100644 regression/contracts/assigns_validity_pointer_04/test.desc delete mode 100644 regression/contracts/embedded_contract_fail_01/main.c delete mode 100644 regression/contracts/embedded_contract_fail_01/test.desc delete mode 100644 regression/contracts/embedded_contract_fail_02/main.c delete mode 100644 regression/contracts/embedded_contract_fail_02/test.desc delete mode 100644 regression/contracts/entry_point/main.c delete mode 100644 regression/contracts/entry_point/test.desc delete mode 100644 regression/contracts/frees-clause-and-predicates-fail/main.c delete mode 100644 regression/contracts/frees-clause-and-predicates-fail/test.desc delete mode 100644 regression/contracts/frees-clause-and-predicates-fail2/main.c delete mode 100644 regression/contracts/frees-clause-and-predicates-fail2/test.desc delete mode 100644 regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/main.c delete mode 100644 regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/test.desc delete mode 100644 regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/main.c delete mode 100644 regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/test.desc delete mode 100644 regression/contracts/function_apply_01/main.c delete mode 100644 regression/contracts/function_apply_01/test.desc delete mode 100644 regression/contracts/function_check_02/main.c delete mode 100644 regression/contracts/function_check_02/test.desc delete mode 100644 regression/contracts/function_loop_history_ensures_fail/main.c delete mode 100644 regression/contracts/function_loop_history_ensures_fail/test.desc delete mode 100644 regression/contracts/function_loop_history_requires_fail/main.c delete mode 100644 regression/contracts/function_loop_history_requires_fail/test.desc delete mode 100644 regression/contracts/function_no_apply_01/main.c delete mode 100644 regression/contracts/function_no_apply_01/test.desc delete mode 100644 regression/contracts/havoc-static/main.c delete mode 100644 regression/contracts/havoc-static/test-exclude.desc delete mode 100644 regression/contracts/havoc-static/test.desc delete mode 100644 regression/contracts/history-constant/main.c delete mode 100644 regression/contracts/history-constant/test.desc delete mode 100644 regression/contracts/history-pointer-both-01/main.c delete mode 100644 regression/contracts/history-pointer-both-01/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-01/main.c delete mode 100644 regression/contracts/history-pointer-enforce-01/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-02/main.c delete mode 100644 regression/contracts/history-pointer-enforce-02/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-03/main.c delete mode 100644 regression/contracts/history-pointer-enforce-03/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-04/main.c delete mode 100644 regression/contracts/history-pointer-enforce-04/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-05/main.c delete mode 100644 regression/contracts/history-pointer-enforce-05/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-06/main.c delete mode 100644 regression/contracts/history-pointer-enforce-06/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-07/main.c delete mode 100644 regression/contracts/history-pointer-enforce-07/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-08/main.c delete mode 100644 regression/contracts/history-pointer-enforce-08/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-11/main.c delete mode 100644 regression/contracts/history-pointer-enforce-11/test.desc delete mode 100644 regression/contracts/history-typecast/main.c delete mode 100644 regression/contracts/history-typecast/test.desc delete mode 100644 regression/contracts/ignored_return_value/main.c delete mode 100644 regression/contracts/ignored_return_value/test.desc delete mode 100644 regression/contracts/named-contracts/main-contract-after-declaration.c delete mode 100644 regression/contracts/named-contracts/main-contract-after-definition.c delete mode 100644 regression/contracts/named-contracts/main-contract-incomplete.c delete mode 100644 regression/contracts/named-contracts/main-contract-signature-conflict.c delete mode 100644 regression/contracts/named-contracts/main-definition-after-contract.c delete mode 100644 regression/contracts/named-contracts/main-no-definition.c delete mode 100644 regression/contracts/named-contracts/test-contract-after-declaration.desc delete mode 100644 regression/contracts/named-contracts/test-contract-after-definition.desc delete mode 100644 regression/contracts/named-contracts/test-contract-incomplete.desc delete mode 100644 regression/contracts/named-contracts/test-contract-signature-conflict.desc delete mode 100644 regression/contracts/named-contracts/test-definition-after-contract.desc delete mode 100644 regression/contracts/named-contracts/test-no-definition.desc delete mode 100644 regression/contracts/quantifiers-exists-ensures-replace/main.c delete mode 100644 regression/contracts/quantifiers-exists-ensures-replace/test.desc delete mode 100644 regression/contracts/quantifiers-forall-ensures-replace/main.c delete mode 100644 regression/contracts/quantifiers-forall-ensures-replace/test.desc delete mode 100644 regression/contracts/quantifiers-nested-01/main.c delete mode 100644 regression/contracts/quantifiers-nested-01/test.desc delete mode 100644 regression/contracts/quantifiers-nested-02/main.c delete mode 100644 regression/contracts/quantifiers-nested-02/test.desc delete mode 100644 regression/contracts/quantifiers-nested-04/main.c delete mode 100644 regression/contracts/quantifiers-nested-04/test.desc delete mode 100644 regression/contracts/quantifiers-nested-05/main.c delete mode 100644 regression/contracts/quantifiers-nested-05/test.desc delete mode 100644 regression/contracts/quantifiers-nested-06/main.c delete mode 100644 regression/contracts/quantifiers-nested-06/test.desc delete mode 100644 regression/contracts/reject_history_expr_in_assigns_clause/main.c delete mode 100644 regression/contracts/reject_history_expr_in_assigns_clause/test.desc delete mode 100644 regression/contracts/reject_history_expr_in_preconditions/main.c delete mode 100644 regression/contracts/reject_history_expr_in_preconditions/test.desc delete mode 100644 regression/contracts/reject_return_value_in_assigns_clause/main.c delete mode 100644 regression/contracts/reject_return_value_in_assigns_clause/test.desc delete mode 100644 regression/contracts/reject_return_value_in_preconditions/main.c delete mode 100644 regression/contracts/reject_return_value_in_preconditions/test.desc delete mode 100644 regression/contracts/trivial_contract_enforce/main.c delete mode 100644 regression/contracts/trivial_contract_enforce/test.desc delete mode 100644 regression/contracts/trivial_contract_replace/main.c delete mode 100644 regression/contracts/trivial_contract_replace/test.desc delete mode 100644 regression/contracts/typed_target_fail_wrong_nof_operand/main.c delete mode 100644 regression/contracts/typed_target_fail_wrong_nof_operand/test.desc delete mode 100644 regression/contracts/typed_target_pointer/main.c delete mode 100644 regression/contracts/typed_target_pointer/test.desc delete mode 100644 regression/contracts/used_return_value/main.c delete mode 100644 regression/contracts/used_return_value/test.desc diff --git a/regression/contracts-dfcc/CMakeLists.txt b/regression/contracts-dfcc/CMakeLists.txt index 0f9ad7ca49c..b03adb34412 100644 --- a/regression/contracts-dfcc/CMakeLists.txt +++ b/regression/contracts-dfcc/CMakeLists.txt @@ -14,21 +14,28 @@ endif() add_test_pl_tests( - "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ $ ${is_windows}" + "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ $ ${is_windows} true" +) + +add_test_pl_profile( + "contracts-non-dfcc" + "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ $ ${is_windows} false" + "-C;-X;dfcc-only;-s;non-dfcc" + "CORE" ) ## Enabling these causes a very significant increase in the time taken to run the regressions #add_test_pl_profile( # "cbmc-z3" -# "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ '$ --z3' ${is_windows}" +# "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ '$ --z3' ${is_windows} true" # "-C;-X;broken-smt-backend;-X;thorough-smt-backend;-X;broken-z3-backend;-X;thorough-z3-backend;${gcc_only_string}-s;z3" # "CORE" #) #add_test_pl_profile( # "cbmc-cprover-smt2" -# "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ '$ --cprover-smt2' ${is_windows}" +# "${CMAKE_CURRENT_SOURCE_DIR}/chain.sh $ $ '$ --cprover-smt2' ${is_windows} true" # "-C;-X;broken-smt-backend;-X;thorough-smt-backend;-X;broken-cprover-smt2-backend;-X;thorough-cprover-smt2-backend;${gcc_only_string}-s;cprover-smt2" # "CORE" #) diff --git a/regression/contracts-dfcc/Makefile b/regression/contracts-dfcc/Makefile index a1700f3d9ab..d31f978d48b 100644 --- a/regression/contracts-dfcc/Makefile +++ b/regression/contracts-dfcc/Makefile @@ -14,16 +14,17 @@ else endif test: - @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument ../../../src/cbmc/cbmc $(is_windows)' -X smt-backend $(GCC_ONLY) + @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument ../../../src/cbmc/cbmc $(is_windows) true' -X smt-backend $(GCC_ONLY) + @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument ../../../src/cbmc/cbmc $(is_windows) false' -X smt-backend $(GCC_ONLY) -X dfcc-only -s non-dfcc test-cprover-smt2: - @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument "../../../src/cbmc/cbmc --cprover-smt2" $(is_windows)' \ + @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument "../../../src/cbmc/cbmc --cprover-smt2" $(is_windows) true' \ -X broken-smt-backend -X thorough-smt-backend \ -X broken-cprover-smt-backend -X thorough-cprover-smt-backend \ -s cprover-smt2 $(GCC_ONLY) test-z3: - @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument "../../../src/cbmc/cbmc --z3" $(is_windows)' \ + @../test.pl -e -p -c '../chain.sh $(exe) ../../../src/goto-instrument/goto-instrument "../../../src/cbmc/cbmc --z3" $(is_windows) true' \ -X broken-smt-backend -X thorough-smt-backend \ -X broken-z3-smt-backend -X thorough-z3-smt-backend \ -s z3 $(GCC_ONLY) diff --git a/regression/contracts-dfcc/assigns-enforce-malloc-zero/test.desc b/regression/contracts-dfcc/assigns-enforce-malloc-zero/test.desc index 6a178fbc2a7..db64e5e4568 100644 --- a/regression/contracts-dfcc/assigns-enforce-malloc-zero/test.desc +++ b/regression/contracts-dfcc/assigns-enforce-malloc-zero/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\] line \d+ Check that a\[\(signed long (long )?int\)i\] is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns-local-composite/test.desc b/regression/contracts-dfcc/assigns-local-composite/test.desc index 261546f1591..ea048658671 100644 --- a/regression/contracts-dfcc/assigns-local-composite/test.desc +++ b/regression/contracts-dfcc/assigns-local-composite/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns-replace-ignored-return-value/test.desc b/regression/contracts-dfcc/assigns-replace-ignored-return-value/test.desc index 92d57115adf..5e6b37a79f9 100644 --- a/regression/contracts-dfcc/assigns-replace-ignored-return-value/test.desc +++ b/regression/contracts-dfcc/assigns-replace-ignored-return-value/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract bar --replace-call-with-contract baz --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns-replace-malloc-zero/test.desc b/regression/contracts-dfcc/assigns-replace-malloc-zero/test.desc index 66adacca708..78396cab4f1 100644 --- a/regression/contracts-dfcc/assigns-replace-malloc-zero/test.desc +++ b/regression/contracts-dfcc/assigns-replace-malloc-zero/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo --malloc-may-fail --malloc-fail-null ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_02/test.desc b/regression/contracts-dfcc/assigns_enforce_02/test.desc index 9b05008a350..0df9cf4e3b1 100644 --- a/regression/contracts-dfcc/assigns_enforce_02/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\] line 6 Check that \*x is assignable: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_enforce_03/test.desc b/regression/contracts-dfcc/assigns_enforce_03/test.desc index 39067aa46f6..0a03a5c5c0c 100644 --- a/regression/contracts-dfcc/assigns_enforce_03/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_03/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^\[f3.assigns.\d+\] line 14 Check that \*x3 is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_04/test.desc b/regression/contracts-dfcc/assigns_enforce_04/test.desc index dd4edf44d7c..befc867ea85 100644 --- a/regression/contracts-dfcc/assigns_enforce_04/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_04/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^\[f3.assigns.\d+\] line 13 Check that \*x3 is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_05/test.desc b/regression/contracts-dfcc/assigns_enforce_05/test.desc index 4432da69532..bf7e9eb2e51 100644 --- a/regression/contracts-dfcc/assigns_enforce_05/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_05/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_06/test.desc b/regression/contracts-dfcc/assigns_enforce_06/test.desc index db14528b092..fc1e840c8c6 100644 --- a/regression/contracts-dfcc/assigns_enforce_06/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_06/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_07/test.desc b/regression/contracts-dfcc/assigns_enforce_07/test.desc index e9f2d4f52df..f187c33c9bd 100644 --- a/regression/contracts-dfcc/assigns_enforce_07/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_07/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_08/test.desc b/regression/contracts-dfcc/assigns_enforce_08/test.desc index 6936ddd4c53..79381cf4bdd 100644 --- a/regression/contracts-dfcc/assigns_enforce_08/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_08/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_09/test.desc b/regression/contracts-dfcc/assigns_enforce_09/test.desc index a75d1d66a9a..251dfa3efc0 100644 --- a/regression/contracts-dfcc/assigns_enforce_09/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_09/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_10/test.desc b/regression/contracts-dfcc/assigns_enforce_10/test.desc index 627c95d33ed..7f6290a23c8 100644 --- a/regression/contracts-dfcc/assigns_enforce_10/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_10/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_11/test.desc b/regression/contracts-dfcc/assigns_enforce_11/test.desc index c707b222dc7..a1f4e25e383 100644 --- a/regression/contracts-dfcc/assigns_enforce_11/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_11/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_15/test-baz.desc b/regression/contracts-dfcc/assigns_enforce_15/test-baz.desc index 8ff04fc5ef8..5bc46c7fc8a 100644 --- a/regression/contracts-dfcc/assigns_enforce_15/test-baz.desc +++ b/regression/contracts-dfcc/assigns_enforce_15/test-baz.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract baz ^\[baz.assigns.\d+\] line \d+ Check that global is assignable: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_enforce_15/test-foo.desc b/regression/contracts-dfcc/assigns_enforce_15/test-foo.desc index 9a7a3e9061c..3043b195c22 100644 --- a/regression/contracts-dfcc/assigns_enforce_15/test-foo.desc +++ b/regression/contracts-dfcc/assigns_enforce_15/test-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/assigns_enforce_15/test-qux.desc b/regression/contracts-dfcc/assigns_enforce_15/test-qux.desc index cc6dde4c28c..a53bd23a8fb 100644 --- a/regression/contracts-dfcc/assigns_enforce_15/test-qux.desc +++ b/regression/contracts-dfcc/assigns_enforce_15/test-qux.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract qux ^\[qux.assigns.\d+\] line \d+ Check that global is assignable: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_enforce_18/test-bar.desc b/regression/contracts-dfcc/assigns_enforce_18/test-bar.desc index 87c73afa6e5..f2a4c4de791 100644 --- a/regression/contracts-dfcc/assigns_enforce_18/test-bar.desc +++ b/regression/contracts-dfcc/assigns_enforce_18/test-bar.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar _ --pointer-primitive-check ^\[bar.assigns.\d+\] line 20 Check that \*b is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_18/test-baz.desc b/regression/contracts-dfcc/assigns_enforce_18/test-baz.desc index 4df2ffcc40a..3585127b044 100644 --- a/regression/contracts-dfcc/assigns_enforce_18/test-baz.desc +++ b/regression/contracts-dfcc/assigns_enforce_18/test-baz.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract baz _ --pointer-primitive-check ^\[free.frees.\d+\].*Check that ptr is freeable: FAILURE diff --git a/regression/contracts-dfcc/assigns_enforce_18/test-foo.desc b/regression/contracts-dfcc/assigns_enforce_18/test-foo.desc index fd4678a44d1..111aff96e99 100644 --- a/regression/contracts-dfcc/assigns_enforce_18/test-foo.desc +++ b/regression/contracts-dfcc/assigns_enforce_18/test-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-primitive-check ^\[foo.assigns.\d+\] line 13 Check that \*xp is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_19_a/test.desc b/regression/contracts-dfcc/assigns_enforce_19_a/test.desc index b5b502a31b0..a251f482d68 100644 --- a/regression/contracts-dfcc/assigns_enforce_19_a/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_19_a/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[f.assigns.\d+\] .* Check that a is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_19_b/test.desc b/regression/contracts-dfcc/assigns_enforce_19_b/test.desc index b383c12ad19..efea0427e21 100644 --- a/regression/contracts-dfcc/assigns_enforce_19_b/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_19_b/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[f.assigns.\d+\] line \d+ Check that b is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_20/test.desc b/regression/contracts-dfcc/assigns_enforce_20/test.desc index baaba4884c9..e5527888b89 100644 --- a/regression/contracts-dfcc/assigns_enforce_20/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_20/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_21/test.desc b/regression/contracts-dfcc/assigns_enforce_21/test.desc index 5098faf183e..afb1e4e43ae 100644 --- a/regression/contracts-dfcc/assigns_enforce_21/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_21/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo --replace-call-with-contract quz ^\[bar.assigns.\d+\].*Check that \*y is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f1.desc b/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f1.desc index 7f208f6f3c1..da5a5325a7b 100644 --- a/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f1.desc +++ b/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^\[f1.assigns.\d+\] line 8 Check that a\[.*0\] is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f2.desc b/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f2.desc index 7f65ab9c23f..078391a2a99 100644 --- a/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f2.desc +++ b/regression/contracts-dfcc/assigns_enforce_arrays_02/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f2 ^\[f2.assigns.\d+\] line \d+ Check that a\[.*0\] is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_arrays_05/test.desc b/regression/contracts-dfcc/assigns_enforce_arrays_05/test.desc index 34c6a0d0873..f7307335533 100644 --- a/regression/contracts-dfcc/assigns_enforce_arrays_05/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_arrays_05/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract uses_assigns ^\[assigns_ptr.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_arrays_10/test.desc b/regression/contracts-dfcc/assigns_enforce_arrays_10/test.desc index fcb0640119a..12f3f0edd5d 100644 --- a/regression/contracts-dfcc/assigns_enforce_arrays_10/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_arrays_10/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_function_call_condition/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_function_call_condition/test.desc index 2b8d3e05bcc..edc907296f1 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_function_call_condition/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_function_call_condition/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^main.c function foo$ diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_lvalue/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_lvalue/test.desc index 299ea4bf7cd..ab7bdfa3204 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_lvalue/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_lvalue/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo main.c function foo diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_lvalue_list/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_lvalue_list/test.desc index d14dfada8dd..4de6284e3c5 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_lvalue_list/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_lvalue_list/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo main.c function foo diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object/test.desc index 1cc5dd49d4a..d45cb3bddbf 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo main.c function foo diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object_list/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object_list/test.desc index 3c494980417..73812da891d 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object_list/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_pointer_object_list/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo main.c function foo diff --git a/regression/contracts-dfcc/assigns_enforce_conditional_unions/test.desc b/regression/contracts-dfcc/assigns_enforce_conditional_unions/test.desc index 74afb7c85e2..e5417594b2a 100644 --- a/regression/contracts-dfcc/assigns_enforce_conditional_unions/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_conditional_unions/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract update _ --pointer-check --pointer-overflow-check --signed-overflow-check --unsigned-overflow-check --conversion-check ^\[is_high_level.assigns.\d+\] line 52 Check that latch is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_detect_local_statics/test.desc b/regression/contracts-dfcc/assigns_enforce_detect_local_statics/test.desc index 097f37d6881..6b856ceefdf 100644 --- a/regression/contracts-dfcc/assigns_enforce_detect_local_statics/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_detect_local_statics/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar ^\[foo.assigns.\d+\] line 17 Check that \*y is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_detect_replaced_local_statics/test.desc b/regression/contracts-dfcc/assigns_enforce_detect_replaced_local_statics/test.desc index 57deaaacb87..a9aae217fe9 100644 --- a/regression/contracts-dfcc/assigns_enforce_detect_replaced_local_statics/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_detect_replaced_local_statics/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract bar --replace-call-with-contract baz --enforce-contract foo _ --pointer-check ^\[main.assertion.\d+\] line \d+ expecting FAILURE: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_enforce_free_dead/test.desc b/regression/contracts-dfcc/assigns_enforce_free_dead/test.desc index 07703974f08..314d1e38e1b 100644 --- a/regression/contracts-dfcc/assigns_enforce_free_dead/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_free_dead/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-primitive-check ^\[foo.assigns.\d+\] line 6 Check that \*x is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc b/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc index 692d283d68e..02cc9825eac 100644 --- a/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_havoc_object/test.desc b/regression/contracts-dfcc/assigns_enforce_havoc_object/test.desc index a1f4df3728b..233580272d7 100644 --- a/regression/contracts-dfcc/assigns_enforce_havoc_object/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_havoc_object/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_malloc_02/test.desc b/regression/contracts-dfcc/assigns_enforce_malloc_02/test.desc index cf9a0f9ca7b..5bd4ad89152 100644 --- a/regression/contracts-dfcc/assigns_enforce_malloc_02/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_malloc_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f main.c function f diff --git a/regression/contracts-dfcc/assigns_enforce_multi_file_02/test.desc b/regression/contracts-dfcc/assigns_enforce_multi_file_02/test.desc index aade2cb196d..11f48a5b9f1 100644 --- a/regression/contracts-dfcc/assigns_enforce_multi_file_02/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_multi_file_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_offsets_2/test.desc b/regression/contracts-dfcc/assigns_enforce_offsets_2/test.desc index 585b51684c1..ce6b1e21ea3 100644 --- a/regression/contracts-dfcc/assigns_enforce_offsets_2/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_offsets_2/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check ^\[foo.assigns.*\d+\].* line 8 Check that x\[\(.*\)1\] is assignable: (SUCCESS|FAILURE)$ diff --git a/regression/contracts-dfcc/assigns_enforce_offsets_4/test.desc b/regression/contracts-dfcc/assigns_enforce_offsets_4/test.desc index 8805c219480..fc3612b2002 100644 --- a/regression/contracts-dfcc/assigns_enforce_offsets_4/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_offsets_4/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_scoping_01/test.desc b/regression/contracts-dfcc/assigns_enforce_scoping_01/test.desc index 3837e4ea994..ebb6bf0bd8b 100644 --- a/regression/contracts-dfcc/assigns_enforce_scoping_01/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_scoping_01/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_scoping_02/test.desc b/regression/contracts-dfcc/assigns_enforce_scoping_02/test.desc index 6df55dcc0b7..3e1b0214cd7 100644 --- a/regression/contracts-dfcc/assigns_enforce_scoping_02/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_scoping_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_statics/test.desc b/regression/contracts-dfcc/assigns_enforce_statics/test.desc index 8bd0fe00c8b..8f0e543b508 100644 --- a/regression/contracts-dfcc/assigns_enforce_statics/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_statics/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-primitive-check ^\[foo.assigns.\d+\] line \d+ Check that y is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f1.desc b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f1.desc index 5072468b9db..d1e16803068 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f1.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f2.desc b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f2.desc index 47dee4059e7..e17e81712f6 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f2.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f2 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f3.desc b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f3.desc index 7d09fc92b32..dda2ff022b0 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f3.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f3.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f3 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f4.desc b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f4.desc index ac292fdff74..70f940298be 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_04/test-f4.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_04/test-f4.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f4 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f1.desc b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f1.desc index 8d53fa2ed5a..a0ca61df0c3 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f1.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f2.desc b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f2.desc index 2ce4f87b181..6a58247dbd4 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f2.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f2 ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f3.desc b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f3.desc index 3fda9761a16..65ec69add21 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_06/test-f3.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_06/test-f3.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f3 ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_07/test-f1.desc b/regression/contracts-dfcc/assigns_enforce_structs_07/test-f1.desc index fa59915921b..48ee2f48940 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_07/test-f1.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_07/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract f1 _ --pointer-check ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_07/test-f2.desc b/regression/contracts-dfcc/assigns_enforce_structs_07/test-f2.desc index f9a8a8cab3b..a0ebcd86895 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_07/test-f2.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_07/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract f2 _ --pointer-check ^EXIT=10$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_08/test-f1.desc b/regression/contracts-dfcc/assigns_enforce_structs_08/test-f1.desc index b4cff17df09..ae4d709b2fe 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_08/test-f1.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_08/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 _ --malloc-may-fail --malloc-fail-null --pointer-check ^\[f1.assigns.\d+\] line \d+ Check that p->buf\[\(.*\)0\] is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_structs_08/test-f2.desc b/regression/contracts-dfcc/assigns_enforce_structs_08/test-f2.desc index 260ac025c13..81632e6070c 100644 --- a/regression/contracts-dfcc/assigns_enforce_structs_08/test-f2.desc +++ b/regression/contracts-dfcc/assigns_enforce_structs_08/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f2 _ --malloc-may-fail --malloc-fail-null --pointer-check ^\[f2.assigns.\d+\] line \d+ Check that pp->p->buf\[\(.*\)0\] is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_enforce_subfunction_calls/test.desc b/regression/contracts-dfcc/assigns_enforce_subfunction_calls/test.desc index 278edf9bc38..e2d0107556e 100644 --- a/regression/contracts-dfcc/assigns_enforce_subfunction_calls/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_subfunction_calls/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[baz.assigns.\d+\].*Check that \*x is assignable: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_repeated_ignored/test.desc b/regression/contracts-dfcc/assigns_repeated_ignored/test.desc index 22db5721515..4c38ec14015 100644 --- a/regression/contracts-dfcc/assigns_repeated_ignored/test.desc +++ b/regression/contracts-dfcc/assigns_repeated_ignored/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/assigns_replace_02/test.desc b/regression/contracts-dfcc/assigns_replace_02/test.desc index e409ccc30bb..7cc80cb7307 100644 --- a/regression/contracts-dfcc/assigns_replace_02/test.desc +++ b/regression/contracts-dfcc/assigns_replace_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_replace_08/test.desc b/regression/contracts-dfcc/assigns_replace_08/test.desc index e1ac05d3378..fb5ff1f4c1b 100644 --- a/regression/contracts-dfcc/assigns_replace_08/test.desc +++ b/regression/contracts-dfcc/assigns_replace_08/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo --replace-call-with-contract bar _ --pointer-primitive-check ^\[bar.assigns.\d+\].*Check that the assigns clause of contract::bar is included in the caller's assigns clause: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_replace_09/test.desc b/regression/contracts-dfcc/assigns_replace_09/test.desc index 1f9bcd841b2..5fc4f00422f 100644 --- a/regression/contracts-dfcc/assigns_replace_09/test.desc +++ b/regression/contracts-dfcc/assigns_replace_09/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract bar --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc index 5b3e7400a5b..6400f363eb8 100644 --- a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc +++ b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_enforce.c --dfcc main --enforce-contract resize_vec _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/replace.desc b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/replace.desc index fc1a96c380b..481c94885ad 100644 --- a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/replace.desc +++ b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/replace.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_replace.c --dfcc main --replace-call-with-contract resize_vec --enforce-contract resize_vec_incr10 _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check ^\[resize_vec.assigns.\d+\].*Check that the assigns clause of contract::resize_vec is included in the caller's assigns clause: FAILURE$ diff --git a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/enforce.desc b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/enforce.desc index 710034739f0..77f7cec7902 100644 --- a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/enforce.desc +++ b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/enforce.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_enforce.c --dfcc main --enforce-contract resize_vec _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/replace.desc b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/replace.desc index ddd7b761393..3692795a0ea 100644 --- a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/replace.desc +++ b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_pass/replace.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_replace.c --dfcc main --replace-call-with-contract resize_vec --enforce-contract resize_vec_incr10 _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check ^\[resize_vec.assigns.\d+\].*Check that the assigns clause of contract::resize_vec is included in the caller's assigns clause: SUCCESS$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo1.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo1.desc index a70cbd6b984..c092efa952d 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo1.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo1 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo10.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo10.desc index dd08132adec..8ce9577b01a 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo10.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo10.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo10 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo2.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo2.desc index 7aa0d231826..b2e5f0854f5 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo2.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo2 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo3.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo3.desc index 16d22bb961e..7b0a33af003 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo3.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo3.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo3 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo4.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo4.desc index 08eb9d5d689..3600c6a2592 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo4.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo4.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo4 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo5.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo5.desc index 53fc0727ec4..5cf436c1a48 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo5.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo5.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo5 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo6.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo6.desc index 98af88c6bed..69d6770068c 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo6.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo6.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo6 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo7.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo7.desc index 18bd4e774e8..42df1f71ac6 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo7.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo7.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo7 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo8.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo8.desc index d8d2b35ff8b..21d30e188ac 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo8.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo8.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo8 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo9.desc b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo9.desc index b8dc351c084..9dfc94679a3 100644 --- a/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo9.desc +++ b/regression/contracts-dfcc/assigns_type_checking_valid_cases/test-foo9.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo9 _ --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc b/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc index a309412cd6e..6d175bf55cb 100644 --- a/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc +++ b/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/chain.sh b/regression/contracts-dfcc/chain.sh index 615fd4568d6..48f8fdb9277 100755 --- a/regression/contracts-dfcc/chain.sh +++ b/regression/contracts-dfcc/chain.sh @@ -6,11 +6,12 @@ goto_cc=$1 goto_instrument=$2 cbmc=$3 is_windows=$4 +use_dfcc=$5 name=${*:$#} name=${name%.c} -args=${*:5:$#-5} +args=${*:6:$#-6} if [[ "$args" != *" _ "* ]] then args_inst=$args @@ -20,6 +21,19 @@ else args_cbmc="${args#*" _ "}" fi +if [[ "${use_dfcc}" == "false" ]]; then + set -- $args_inst + args_inst="" + while [[ $# -gt 0 ]]; do + if [[ "x$1" == "x--dfcc" ]]; then + shift 2 + else + args_inst+=" $1" + shift + fi + done +fi + if [[ "${is_windows}" == "true" ]]; then $goto_cc "${name}.c" "/Fe${name}.gb" else diff --git a/regression/contracts-dfcc/contracts_with_function_pointers/test.desc b/regression/contracts-dfcc/contracts_with_function_pointers/test.desc index 85ee25b00ea..a62fcad01a9 100644 --- a/regression/contracts-dfcc/contracts_with_function_pointers/test.desc +++ b/regression/contracts-dfcc/contracts_with_function_pointers/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar ^EXIT=0$ diff --git a/regression/contracts-dfcc/cprover-assignable-fail/test.desc b/regression/contracts-dfcc/cprover-assignable-fail/test.desc index 9dd9d2994b2..1593cee72af 100644 --- a/regression/contracts-dfcc/cprover-assignable-fail/test.desc +++ b/regression/contracts-dfcc/cprover-assignable-fail/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main CALL __CPROVER_object_whole diff --git a/regression/contracts-dfcc/cprover-assignable-pass/test.desc b/regression/contracts-dfcc/cprover-assignable-pass/test.desc index 7e427fedede..0530ea1e7b7 100644 --- a/regression/contracts-dfcc/cprover-assignable-pass/test.desc +++ b/regression/contracts-dfcc/cprover-assignable-pass/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main CALL __CPROVER_object_whole diff --git a/regression/contracts-dfcc/enforce-replace-unknown-function/enforce.desc b/regression/contracts-dfcc/enforce-replace-unknown-function/enforce.desc index 772a4322242..5084fdcacfb 100644 --- a/regression/contracts-dfcc/enforce-replace-unknown-function/enforce.desc +++ b/regression/contracts-dfcc/enforce-replace-unknown-function/enforce.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract goo ^Function to check 'goo' either not found or has no body$ diff --git a/regression/contracts-dfcc/enforce-replace-unknown-function/replace.desc b/regression/contracts-dfcc/enforce-replace-unknown-function/replace.desc index 206770d2ae0..fd9a4e859fe 100644 --- a/regression/contracts-dfcc/enforce-replace-unknown-function/replace.desc +++ b/regression/contracts-dfcc/enforce-replace-unknown-function/replace.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract goo ^Function to replace 'goo' not found$ diff --git a/regression/contracts-dfcc/frees-clause-and-predicates/test.desc b/regression/contracts-dfcc/frees-clause-and-predicates/test.desc index 4ee5db81a2b..0315a6d1276 100644 --- a/regression/contracts-dfcc/frees-clause-and-predicates/test.desc +++ b/regression/contracts-dfcc/frees-clause-and-predicates/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/function-calls-01-enforce-failure/test.desc b/regression/contracts-dfcc/function-calls-01-enforce-failure/test.desc index a92e773c386..e207f1e6a60 100644 --- a/regression/contracts-dfcc/function-calls-01-enforce-failure/test.desc +++ b/regression/contracts-dfcc/function-calls-01-enforce-failure/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[f.postcondition.\d+\] .* Check ensures clause of contract contract::f for function f: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-01-enforce-success/test.desc b/regression/contracts-dfcc/function-calls-01-enforce-success/test.desc index 04f08b1fb27..5075a982d62 100644 --- a/regression/contracts-dfcc/function-calls-01-enforce-success/test.desc +++ b/regression/contracts-dfcc/function-calls-01-enforce-success/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[f.postcondition.\d+\] .* Check ensures clause of contract contract::f for function f: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-01-replace-failure/test.desc b/regression/contracts-dfcc/function-calls-01-replace-failure/test.desc index 7e9dfbc2dfe..14653790d30 100644 --- a/regression/contracts-dfcc/function-calls-01-replace-failure/test.desc +++ b/regression/contracts-dfcc/function-calls-01-replace-failure/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f ^\[f.precondition.\d+\] .* Check requires clause of contract contract::f for function f: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-01-replace-success/test.desc b/regression/contracts-dfcc/function-calls-01-replace-success/test.desc index a974401a4ba..c2ecaa1bd8d 100644 --- a/regression/contracts-dfcc/function-calls-01-replace-success/test.desc +++ b/regression/contracts-dfcc/function-calls-01-replace-success/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f ^\[f.precondition.\d+\] .* Check requires clause of contract contract::f for function f: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-02-failure/test-enf-f-repl-g.desc b/regression/contracts-dfcc/function-calls-02-failure/test-enf-f-repl-g.desc index dbf977345a0..9c85305d761 100644 --- a/regression/contracts-dfcc/function-calls-02-failure/test-enf-f-repl-g.desc +++ b/regression/contracts-dfcc/function-calls-02-failure/test-enf-f-repl-g.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f --replace-call-with-contract g ^\[f.postcondition.\d+\] .* Check ensures clause of contract contract::f for function f: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-02-failure/test-enf-f.desc b/regression/contracts-dfcc/function-calls-02-failure/test-enf-f.desc index 247a0513649..801202a3c61 100644 --- a/regression/contracts-dfcc/function-calls-02-failure/test-enf-f.desc +++ b/regression/contracts-dfcc/function-calls-02-failure/test-enf-f.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[f.postcondition.\d+\] .* Check ensures clause of contract contract::f for function f: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-02-failure/test-enf-g.desc b/regression/contracts-dfcc/function-calls-02-failure/test-enf-g.desc index 02416dba3f2..11480ea2391 100644 --- a/regression/contracts-dfcc/function-calls-02-failure/test-enf-g.desc +++ b/regression/contracts-dfcc/function-calls-02-failure/test-enf-g.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract g ^\[g.postcondition.\d+\] .* Check ensures clause of contract contract::g for function g: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-02-success/test-enf-f-repl-g.desc b/regression/contracts-dfcc/function-calls-02-success/test-enf-f-repl-g.desc index ffcee261725..909a6bfdc4f 100644 --- a/regression/contracts-dfcc/function-calls-02-success/test-enf-f-repl-g.desc +++ b/regression/contracts-dfcc/function-calls-02-success/test-enf-f-repl-g.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f --replace-call-with-contract g ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-calls-02-success/test-enf-f.desc b/regression/contracts-dfcc/function-calls-02-success/test-enf-f.desc index 737dbb8330d..2871dddac20 100644 --- a/regression/contracts-dfcc/function-calls-02-success/test-enf-f.desc +++ b/regression/contracts-dfcc/function-calls-02-success/test-enf-f.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-calls-02-success/test-enf-g.desc b/regression/contracts-dfcc/function-calls-02-success/test-enf-g.desc index a3e967cf3c7..bdf0b6409cb 100644 --- a/regression/contracts-dfcc/function-calls-02-success/test-enf-g.desc +++ b/regression/contracts-dfcc/function-calls-02-success/test-enf-g.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract g ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-calls-03-direct-recursion/test-norec.desc b/regression/contracts-dfcc/function-calls-03-direct-recursion/test-norec.desc index 66de5244e59..c9b5f1ccfc3 100644 --- a/regression/contracts-dfcc/function-calls-03-direct-recursion/test-norec.desc +++ b/regression/contracts-dfcc/function-calls-03-direct-recursion/test-norec.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f ^\[.*\].*No recursive call to function f when checking contract f: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-03-direct-recursion/test-rec.desc b/regression/contracts-dfcc/function-calls-03-direct-recursion/test-rec.desc index 58fea7903ed..1b45d27d5ef 100644 --- a/regression/contracts-dfcc/function-calls-03-direct-recursion/test-rec.desc +++ b/regression/contracts-dfcc/function-calls-03-direct-recursion/test-rec.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract-rec f ^\[f.postcondition.\d+\].*Check ensures clause of contract contract::f for function f: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even-repl-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even-repl-odd.desc index 6eb5a0e9f96..469a74c8128 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even-repl-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even-repl-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract even --replace-call-with-contract odd ^\[even.postcondition.\d+\] .* Check ensures clause of contract contract::even for function even: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even.desc index 1b1756e3774..57da45eb41d 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract even ^\[.*\].*No recursive call to function even when checking contract even: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd-repl-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd-repl-even.desc index 9b00a041322..72580b5bcdd 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd-repl-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd-repl-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract odd --replace-call-with-contract even ^\[even.precondition.\d+\] .* Check requires clause of contract contract::even for function even: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd.desc index d9d818a6b10..53c271478a3 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract odd ^\[.*\].*No recursive call to function odd when checking contract odd: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-even.desc index 994d86580ee..0ec104b73c1 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract-rec even ^\[even.precondition.\d+\] .* Check requires clause of contract contract::even for function even: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-odd.desc index 8e38faa26c2..d15339d4b7b 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-failure/test-enf-rec-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract-rec odd ^\[odd.precondition.\d+\] .* Check requires clause of contract contract::odd for function odd: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even-repl-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even-repl-odd.desc index fb0117b23d1..78d19c61c3e 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even-repl-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even-repl-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract even --replace-call-with-contract odd ^\[odd.assigns.\d+\].*Check that the assigns clause of contract::odd is included in the caller's assigns clause: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even.desc index b4a8f24cb8b..3149aa79f65 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract even ^\[.*\].*No recursive call to function even when checking contract even: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd-repl-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd-repl-even.desc index 554c7a7f851..29e018495fb 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd-repl-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd-repl-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract odd --replace-call-with-contract even ^\[even.assigns.\d+\].*Check that the assigns clause of contract::even is included in the caller's assigns clause: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd.desc index 195ce5e638b..5a525a036b0 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract odd ^\[.*\].*No recursive call to function odd when checking contract odd: FAILURE$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-even.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-even.desc index 7f66c51bea1..52b29014348 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-even.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-even.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_even.c --dfcc main --enforce-contract-rec even ^\[even.assigns.\d+\].*Check that the assigns clause of contract::even is included in the caller's assigns clause: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-odd.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-odd.desc index a61f0b86800..006e6b0366b 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-odd.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-enf-rec-odd.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_odd.c --dfcc main --enforce-contract-rec odd ^\[odd.assigns.\d+\].*Check that the assigns clause of contract::odd is included in the caller's assigns clause: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-unwind.desc b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-unwind.desc index 195793e3c3c..d31e5371194 100644 --- a/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-unwind.desc +++ b/regression/contracts-dfcc/function-calls-04-mutual-recursion-success/test-unwind.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_unwind.c --dfcc main _ --unwind 20 --unwinding-assertions ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-calls-05-function-pointer-call-fail/test.desc b/regression/contracts-dfcc/function-calls-05-function-pointer-call-fail/test.desc index 6d03b4b2a97..9bc60af1ed8 100644 --- a/regression/contracts-dfcc/function-calls-05-function-pointer-call-fail/test.desc +++ b/regression/contracts-dfcc/function-calls-05-function-pointer-call-fail/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.postcondition.\d+\] line \d+ Check ensures clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-05-function-pointer-call-pass/test.desc b/regression/contracts-dfcc/function-calls-05-function-pointer-call-pass/test.desc index e9aafc8d995..69b6d7c8375 100644 --- a/regression/contracts-dfcc/function-calls-05-function-pointer-call-pass/test.desc +++ b/regression/contracts-dfcc/function-calls-05-function-pointer-call-pass/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo \[foo.postcondition.\d+\] line \d+ Check ensures clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-recursive-function-1/test-replace.desc b/regression/contracts-dfcc/function-calls-recursive-function-1/test-replace.desc index ef38606c385..64618e3413d 100644 --- a/regression/contracts-dfcc/function-calls-recursive-function-1/test-replace.desc +++ b/regression/contracts-dfcc/function-calls-recursive-function-1/test-replace.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f --replace-call-with-contract g ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-calls-recursive-function-1/test-unwind.desc b/regression/contracts-dfcc/function-calls-recursive-function-1/test-unwind.desc index 03481cc044b..5588a6cf3fc 100644 --- a/regression/contracts-dfcc/function-calls-recursive-function-1/test-unwind.desc +++ b/regression/contracts-dfcc/function-calls-recursive-function-1/test-unwind.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f _ --unwind 20 --unwinding-assertions ^\[f.postcondition.\d+].*Check ensures clause of contract contract::f for function f: SUCCESS$ diff --git a/regression/contracts-dfcc/function-calls-recursive-function-2/test.desc b/regression/contracts-dfcc/function-calls-recursive-function-2/test.desc index a9fe38c78a5..d90e0210840 100644 --- a/regression/contracts-dfcc/function-calls-recursive-function-2/test.desc +++ b/regression/contracts-dfcc/function-calls-recursive-function-2/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract sum ^\[sum.postcondition.\d+\].*Check ensures clause of contract contract::sum for function sum: SUCCESS$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-contract.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-contract.desc index c82e9c424db..7851d9e52fb 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-contract.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-contract.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo/ _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^Invalid function-contract mapping$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-function.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-function.desc index a1d3bc852b2..b8f8d013e04 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-function.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-function.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract /my_contract _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^Invalid function-contract mapping$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-too-many.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-too-many.desc index 33b06ec2b68..1e14b86e52e 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-too-many.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-fail-too-many.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo/bar/my_contract _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^Invalid function-contract mapping$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-pass.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-pass.desc index fadb4e9409c..18186ac349f 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-pass.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-pass.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo/my_contract _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-replace-pass.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-replace-pass.desc index 73d6feb243a..03fe2bd9377 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-replace-pass.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-replace-pass.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo/my_contract --replace-call-with-contract bar/my_contract _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-contract-mapping/test-enforce-warning-not-found.desc b/regression/contracts-dfcc/function-contract-mapping/test-enforce-warning-not-found.desc index a90b06d7b80..5bc122143e8 100644 --- a/regression/contracts-dfcc/function-contract-mapping/test-enforce-warning-not-found.desc +++ b/regression/contracts-dfcc/function-contract-mapping/test-enforce-warning-not-found.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo/my_contractt _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^Contract 'my_contractt' not found, deriving empty pure contract 'contract::my_contractt' from function 'foo'$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-enforce/test.desc b/regression/contracts-dfcc/function-pointer-contracts-enforce/test.desc index 9c235f053f5..ace2486d5ff 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-enforce/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --restrict-function-pointer foo.CALL/arr_fun_contract --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-replace-1/test.desc b/regression/contracts-dfcc/function-pointer-contracts-replace-1/test.desc index 59c119b8546..3fac1d18d4f 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-replace-1/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-replace-1/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[main.assertion.\d+\].*assertion outfun1 == arr_fun_contract: SUCCESS$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-replace-2/test.desc b/regression/contracts-dfcc/function-pointer-contracts-replace-2/test.desc index 36bb450f58b..27e3c8869ba 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-replace-2/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-replace-2/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar --replace-call-with-contract foo --replace-call-with-contract get_arr_fun ^EXIT=0$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-1/test.desc b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-1/test.desc index 8cb9df3d1c7..8ae161b14de 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-1/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-1/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^.*error: expected 2 arguments for __CPROVER_obeys_contract, found 3$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-2/test.desc b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-2/test.desc index 76dbc92806b..80dff7f1896 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-2/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-2/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^.*error: the first argument of __CPROVER_obeys_contract must have no ternary operator$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-3/test.desc b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-3/test.desc index aa6a34bf80e..531e7f10357 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-3/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-3/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^.*error: the first argument of __CPROVER_obeys_contract must be a function pointer lvalue expression$ diff --git a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-4/test.desc b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-4/test.desc index dd06206a628..087f0031320 100644 --- a/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-4/test.desc +++ b/regression/contracts-dfcc/function-pointer-contracts-typecheck-error-4/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^.*error: the first and second arguments of __CPROVER_obeys_contract must have the same function pointer type$ diff --git a/regression/contracts-dfcc/function_check_01/test.desc b/regression/contracts-dfcc/function_check_01/test.desc index 5400a943e42..a10b7ee834c 100644 --- a/regression/contracts-dfcc/function_check_01/test.desc +++ b/regression/contracts-dfcc/function_check_01/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract min ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_03/test.desc b/regression/contracts-dfcc/function_check_03/test.desc index 9bb23a02927..86eab18cd32 100644 --- a/regression/contracts-dfcc/function_check_03/test.desc +++ b/regression/contracts-dfcc/function_check_03/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +KNOWNBUG dfcc-only main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_04/test.desc b/regression/contracts-dfcc/function_check_04/test.desc index 8b620b567ee..5ae8d53c711 100644 --- a/regression/contracts-dfcc/function_check_04/test.desc +++ b/regression/contracts-dfcc/function_check_04/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +KNOWNBUG dfcc-only main.c --dfcc main --apply-code-contracts ^EXIT=10$ diff --git a/regression/contracts-dfcc/function_check_05/test.desc b/regression/contracts-dfcc/function_check_05/test.desc index a9157dcc978..aca47ab5193 100644 --- a/regression/contracts-dfcc/function_check_05/test.desc +++ b/regression/contracts-dfcc/function_check_05/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +KNOWNBUG dfcc-only main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_mem_01/test.desc b/regression/contracts-dfcc/function_check_mem_01/test.desc index ad947b626ae..ffb9a75db09 100644 --- a/regression/contracts-dfcc/function_check_mem_01/test.desc +++ b/regression/contracts-dfcc/function_check_mem_01/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +KNOWNBUG dfcc-only main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/havoc-conditional-target/check-foo.desc b/regression/contracts-dfcc/havoc-conditional-target/check-foo.desc index 3e04ad3edfb..c1a2a0f1e68 100644 --- a/regression/contracts-dfcc/havoc-conditional-target/check-foo.desc +++ b/regression/contracts-dfcc/havoc-conditional-target/check-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only check-foo.c --dfcc main --enforce-contract foo _ --pointer-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/havoc-conditional-target/replace-foo.desc b/regression/contracts-dfcc/havoc-conditional-target/replace-foo.desc index 3c7a77420d5..e601a016091 100644 --- a/regression/contracts-dfcc/havoc-conditional-target/replace-foo.desc +++ b/regression/contracts-dfcc/havoc-conditional-target/replace-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only replace-foo.c --dfcc main --enforce-contract bar --replace-call-with-contract foo _ --pointer-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-enforce-09/test.desc b/regression/contracts-dfcc/history-pointer-enforce-09/test.desc index 32a3402230a..32926316e00 100644 --- a/regression/contracts-dfcc/history-pointer-enforce-09/test.desc +++ b/regression/contracts-dfcc/history-pointer-enforce-09/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-enforce-10/test-bar.desc b/regression/contracts-dfcc/history-pointer-enforce-10/test-bar.desc index 983171495b6..ceb94cfdf62 100644 --- a/regression/contracts-dfcc/history-pointer-enforce-10/test-bar.desc +++ b/regression/contracts-dfcc/history-pointer-enforce-10/test-bar.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-enforce-10/test-baz.desc b/regression/contracts-dfcc/history-pointer-enforce-10/test-baz.desc index c580f0654db..a3b813212ec 100644 --- a/regression/contracts-dfcc/history-pointer-enforce-10/test-baz.desc +++ b/regression/contracts-dfcc/history-pointer-enforce-10/test-baz.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract baz ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-enforce-10/test-foo.desc b/regression/contracts-dfcc/history-pointer-enforce-10/test-foo.desc index 6ea058791a9..3b8c84b0557 100644 --- a/regression/contracts-dfcc/history-pointer-enforce-10/test-foo.desc +++ b/regression/contracts-dfcc/history-pointer-enforce-10/test-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-replace-01/test.desc b/regression/contracts-dfcc/history-pointer-replace-01/test.desc index c7553f74137..ab07f18e0a6 100644 --- a/regression/contracts-dfcc/history-pointer-replace-01/test.desc +++ b/regression/contracts-dfcc/history-pointer-replace-01/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\].*Check requires clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/history-pointer-replace-02/test.desc b/regression/contracts-dfcc/history-pointer-replace-02/test.desc index 22d90636c95..4c64b54df16 100644 --- a/regression/contracts-dfcc/history-pointer-replace-02/test.desc +++ b/regression/contracts-dfcc/history-pointer-replace-02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\].*Check requires clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/history-pointer-replace-03/test.desc b/regression/contracts-dfcc/history-pointer-replace-03/test.desc index aa9379f2d0f..2a317ec4979 100644 --- a/regression/contracts-dfcc/history-pointer-replace-03/test.desc +++ b/regression/contracts-dfcc/history-pointer-replace-03/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^main.c.* error: __CPROVER_old is not allowed in preconditions.$ diff --git a/regression/contracts-dfcc/history-pointer-replace-04/test.desc b/regression/contracts-dfcc/history-pointer-replace-04/test.desc index 6c66cd45efc..14c2c0d8388 100644 --- a/regression/contracts-dfcc/history-pointer-replace-04/test.desc +++ b/regression/contracts-dfcc/history-pointer-replace-04/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\] line \d+ Check requires clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc b/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc index 9934d9515a4..16cf4fe9f39 100644 --- a/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc +++ b/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[main.assertion.\d+\].*c is rw_ok: SUCCESS$ diff --git a/regression/contracts-dfcc/is_unique_01_replace/test.desc b/regression/contracts-dfcc/is_unique_01_replace/test.desc index 34b59785f6a..76a662f856e 100644 --- a/regression/contracts-dfcc/is_unique_01_replace/test.desc +++ b/regression/contracts-dfcc/is_unique_01_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/loop-freeness-check/test.desc b/regression/contracts-dfcc/loop-freeness-check/test.desc index fcfbdc7a242..ef93e2830c9 100644 --- a/regression/contracts-dfcc/loop-freeness-check/test.desc +++ b/regression/contracts-dfcc/loop-freeness-check/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\].*Check that i is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert-bounded.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert-bounded.desc index 7d845f9c092..173445e6b92 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert-bounded.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert-bounded.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_bounded.c --malloc-may-fail --malloc-fail-assert --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_is_fresh.assertion.\d+\] line \d+ __CPROVER_is_fresh max allocation size exceeded: SUCCESS$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert.desc index f5ce8894ac5..7c20dc70831 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-assert.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-assert --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_is_fresh.assertion.\d+\] line \d+ __CPROVER_is_fresh max allocation size exceeded: FAILURE$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none-bounded.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none-bounded.desc index d4d4ec91ae5..9788d6bae1a 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none-bounded.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none-bounded.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_bounded.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_car_set_insert.assertion.\d+\] line \d+ CAR size is less than __CPROVER_max_malloc_size: SUCCESS$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none.desc index 7eaa04afab1..59e873628b6 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-none.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_car_set_insert.assertion.\d+\] line \d+ CAR size is less than __CPROVER_max_malloc_size: FAILURE$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null-bounded.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null-bounded.desc index 10fb1343ffa..1f0bb2c9e7e 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null-bounded.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null-bounded.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_bounded.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_car_set_insert.assertion.\d+\] line \d+ CAR size is less than __CPROVER_max_malloc_size: SUCCESS$ diff --git a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null.desc b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null.desc index 06fbd42f029..2325a4ab7ff 100644 --- a/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null.desc +++ b/regression/contracts-dfcc/memory-predicates-is-fresh-failure-modes/test-fail-null.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check --pointer-overflow-check ^\[__CPROVER_contracts_car_set_insert.assertion.\d+\] line \d+ CAR size is less than __CPROVER_max_malloc_size: SUCCESS$ diff --git a/regression/contracts-dfcc/memory-predicates-pointer-in-range-nondet/test.desc b/regression/contracts-dfcc/memory-predicates-pointer-in-range-nondet/test.desc index 693a0ed85ea..87df53ec6d6 100644 --- a/regression/contracts-dfcc/memory-predicates-pointer-in-range-nondet/test.desc +++ b/regression/contracts-dfcc/memory-predicates-pointer-in-range-nondet/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --restrict-function-pointer foo.CALL/return_0,return_1 --nondet-static-exclude vtable_0 --nondet-static-exclude vtable_1 --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/memory-predicates-pointer-in-range-requires/test.desc b/regression/contracts-dfcc/memory-predicates-pointer-in-range-requires/test.desc index e0e29589e13..52123718dcc 100644 --- a/regression/contracts-dfcc/memory-predicates-pointer-in-range-requires/test.desc +++ b/regression/contracts-dfcc/memory-predicates-pointer-in-range-requires/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-01/test.desc b/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-01/test.desc index 3116264747b..30d4197c045 100644 --- a/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-01/test.desc +++ b/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-01/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^.*error: __CPROVER_pointer_in_range_dfcc expects three arguments$ diff --git a/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-02/test.desc b/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-02/test.desc index 67c197865a0..4310c80690f 100644 --- a/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-02/test.desc +++ b/regression/contracts-dfcc/memory-predicates-pointer-in-range-typecheck-failure-02/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --malloc-may-fail --malloc-fail-null --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^.*error: __CPROVER_pointer_in_range_dfcc expects pointer-typed arguments$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-ensures-enforce/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-ensures-enforce/test.desc index 1ab0b27e0cc..41bb3e163b8 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-ensures-enforce/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-ensures-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-ensures-replace/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-ensures-replace/test.desc index 224938be523..913cee8a232 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-ensures-replace/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-ensures-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar --replace-call-with-contract foo _ --pointer-check --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-mutually-recursive-fail/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-mutually-recursive-fail/test.desc index 0daf2567c3d..99c38de45ad 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-mutually-recursive-fail/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-mutually-recursive-fail/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^could not determine instrumentation order for memory predicates, most likely due to mutual recursion$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-recursive-alternation/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-recursive-alternation/test.desc index 9daba594bd4..0a2f099b7f3 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-recursive-alternation/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-recursive-alternation/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-requires-enforce/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-requires-enforce/test.desc index 29de400a9ac..280292fcdf7 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-requires-enforce/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-requires-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo _ --pointer-check --pointer-primitive-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/memory-predicates-user-defined-requires-replace/test.desc b/regression/contracts-dfcc/memory-predicates-user-defined-requires-replace/test.desc index 9a0a17f5855..6a05e4b45f5 100644 --- a/regression/contracts-dfcc/memory-predicates-user-defined-requires-replace/test.desc +++ b/regression/contracts-dfcc/memory-predicates-user-defined-requires-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo --replace-call-with-contract bar --replace-call-with-contract baz _ --pointer-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/missing-function-body/test.desc b/regression/contracts-dfcc/missing-function-body/test.desc index 7f28baba93e..c0608e75ce8 100644 --- a/regression/contracts-dfcc/missing-function-body/test.desc +++ b/regression/contracts-dfcc/missing-function-body/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract bar ^\[foo.assertion.\d+\] line 1 undefined function should be unreachable: FAILURE$ diff --git a/regression/contracts-dfcc/no_redudant_checks/test.desc b/regression/contracts-dfcc/no_redudant_checks/test.desc index e47b0738092..49d854541a6 100644 --- a/regression/contracts-dfcc/no_redudant_checks/test.desc +++ b/regression/contracts-dfcc/no_redudant_checks/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --pointer-overflow-check _ --pointer-overflow-check --unsigned-overflow-check ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc b/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc index fef137d2254..17b8b98d476 100644 --- a/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc b/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc index 29de9e6d662..b7ed0fcab66 100644 --- a/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f1.desc b/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f1.desc index be900d3955a..4780fa48638 100644 --- a/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f1.desc +++ b/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f1.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=10$ diff --git a/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f2.desc b/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f2.desc index 91473c04d76..5988f35f96a 100644 --- a/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f2.desc +++ b/regression/contracts-dfcc/quantifiers-exists-ensures-enforce/test-f2.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f2 ^EXIT=10$ diff --git a/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc b/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc index a73c545917c..aa98813d628 100644 --- a/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc b/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc index 604de50f38f..87b9dc50fd8 100644 --- a/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f1 --replace-call-with-contract f2 ^EXIT=10$ diff --git a/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc b/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc index 91845ddc5f7..985cd8a5fc4 100644 --- a/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc b/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc index fecf4e1253f..8ce8b0988af 100644 --- a/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-forall-ensures-enforce/test.desc b/regression/contracts-dfcc/quantifiers-forall-ensures-enforce/test.desc index 74829d6610c..8458deb6fd9 100644 --- a/regression/contracts-dfcc/quantifiers-forall-ensures-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-ensures-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc b/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc index 1ccc72461b5..66cf432945f 100644 --- a/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc b/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc index d5fab66f510..341c82a6191 100644 --- a/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/quantifiers-nested-03/test.desc b/regression/contracts-dfcc/quantifiers-nested-03/test.desc index 81573cba6fe..af17079ea20 100644 --- a/regression/contracts-dfcc/quantifiers-nested-03/test.desc +++ b/regression/contracts-dfcc/quantifiers-nested-03/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract f1 ^EXIT=0$ diff --git a/regression/contracts-dfcc/replace-nondet-return-value/test.desc b/regression/contracts-dfcc/replace-nondet-return-value/test.desc index fe336e5d534..c4005eac261 100644 --- a/regression/contracts-dfcc/replace-nondet-return-value/test.desc +++ b/regression/contracts-dfcc/replace-nondet-return-value/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract cmp ^EXIT=10$ diff --git a/regression/contracts-dfcc/test_aliasing_enforce/test.desc b/regression/contracts-dfcc/test_aliasing_enforce/test.desc index 9bc845fd1f8..e8fc5123fe6 100644 --- a/regression/contracts-dfcc/test_aliasing_enforce/test.desc +++ b/regression/contracts-dfcc/test_aliasing_enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_aliasing_ensure/test.desc b/regression/contracts-dfcc/test_aliasing_ensure/test.desc index 29bd2e5ab12..27a7b7d5a2c 100644 --- a/regression/contracts-dfcc/test_aliasing_ensure/test.desc +++ b/regression/contracts-dfcc/test_aliasing_ensure/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-bar.desc b/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-bar.desc index a9717cfd938..e5306b7a57a 100644 --- a/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-bar.desc +++ b/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-bar.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_bar.c --dfcc main --enforce-contract bar ^\[bar.postcondition.\d+\].*Check ensures clause of contract contract::bar for function bar: SUCCESS$ diff --git a/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-foo.desc b/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-foo.desc index 35338c33b08..d6126990dcd 100644 --- a/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-foo.desc +++ b/regression/contracts-dfcc/test_aliasing_ensure_indirect/test-foo.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main_foo.c --dfcc main --enforce-contract foo --replace-call-with-contract bar ^\[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/test_aliasing_replace/test.desc b/regression/contracts-dfcc/test_aliasing_replace/test.desc index 81c0f13e6ca..0e5944d5165 100644 --- a/regression/contracts-dfcc/test_aliasing_replace/test.desc +++ b/regression/contracts-dfcc/test_aliasing_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^EXIT=10$ diff --git a/regression/contracts-dfcc/test_array_memory_enforce/test.desc b/regression/contracts-dfcc/test_array_memory_enforce/test.desc index 4c145f64aa8..dcef80857b4 100644 --- a/regression/contracts-dfcc/test_array_memory_enforce/test.desc +++ b/regression/contracts-dfcc/test_array_memory_enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_array_memory_replace/test.desc b/regression/contracts-dfcc/test_array_memory_replace/test.desc index 26cb949cb17..cc905aa6fff 100644 --- a/regression/contracts-dfcc/test_array_memory_replace/test.desc +++ b/regression/contracts-dfcc/test_array_memory_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/test_array_memory_too_small_replace/test.desc b/regression/contracts-dfcc/test_array_memory_too_small_replace/test.desc index 01569bcc9b9..fa5e3074951 100644 --- a/regression/contracts-dfcc/test_array_memory_too_small_replace/test.desc +++ b/regression/contracts-dfcc/test_array_memory_too_small_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\] line \d+ Check requires clause of contract contract::foo for function foo: FAILURE$ diff --git a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_ensures/test.desc b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_ensures/test.desc index c4de8c4d834..7cc4c7a4a21 100644 --- a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_ensures/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_ensures/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\].*Check that \*out1 is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_requires/test.desc b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_requires/test.desc index 7e786e0a936..d4b08e244fd 100644 --- a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_requires/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_separation_against_requires/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assertion.\d+\].*in1 is rw_ok: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_size/test.desc b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_size/test.desc index 0b210e82532..427486e620a 100644 --- a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_size/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_fail_size/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\].*Check that \*out is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_pass/test.desc b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_pass/test.desc index 98cfa40431e..b886f1f2a20 100644 --- a/regression/contracts-dfcc/test_is_fresh_enforce_ensures_pass/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_enforce_ensures_pass/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_enforce_requires_pass/test.desc b/regression/contracts-dfcc/test_is_fresh_enforce_requires_pass/test.desc index f1a95b7d4d5..892c333cd03 100644 --- a/regression/contracts-dfcc/test_is_fresh_enforce_requires_pass/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_enforce_requires_pass/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assertion.\d+\].*in1 is rw_ok: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-enforce.desc b/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-enforce.desc index d96a03388ce..19936ff0231 100644 --- a/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-enforce.desc +++ b/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-enforce.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^\[foo.assigns.\d+\].*Check that \*out_ptr1 is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-replace.desc b/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-replace.desc index 986e0697290..8ee04bccb79 100644 --- a/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-replace.desc +++ b/regression/contracts-dfcc/test_is_fresh_replace_ensures_pass/test-replace.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[main.assertion.\d+\].*out1 is rw_ok: SUCCESS$ diff --git a/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_separation/test.desc b/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_separation/test.desc index bf396083c82..67310a1ea88 100644 --- a/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_separation/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_separation/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\].*Check requires clause of contract contract::foo for function foo: FAILURE$ diff --git a/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_size/test.desc b/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_size/test.desc index 529aaeb4159..b1c24fab03f 100644 --- a/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_size/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_replace_requires_fail_size/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\].*Check requires clause of contract contract::foo for function foo: FAILURE$ diff --git a/regression/contracts-dfcc/test_is_fresh_replace_requires_pass/test.desc b/regression/contracts-dfcc/test_is_fresh_replace_requires_pass/test.desc index ad0cc452125..42706ff7c50 100644 --- a/regression/contracts-dfcc/test_is_fresh_replace_requires_pass/test.desc +++ b/regression/contracts-dfcc/test_is_fresh_replace_requires_pass/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^\[foo.precondition.\d+\].*Check requires clause of contract contract::foo for function foo: SUCCESS$ diff --git a/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc b/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc index 70c2d22a7d9..f7071961a2f 100644 --- a/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc +++ b/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract sub_ptr_values ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc b/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc index 73989a016f2..bb6515fb818 100644 --- a/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc +++ b/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo \[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS diff --git a/regression/contracts-dfcc/test_scalar_memory_replace/test.desc b/regression/contracts-dfcc/test_scalar_memory_replace/test.desc index dd4c533b248..3a20fdbfab4 100644 --- a/regression/contracts-dfcc/test_scalar_memory_replace/test.desc +++ b/regression/contracts-dfcc/test_scalar_memory_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/test_struct_enforce/test.desc b/regression/contracts-dfcc/test_struct_enforce/test.desc index 80ace046dec..bdd17691915 100644 --- a/regression/contracts-dfcc/test_struct_enforce/test.desc +++ b/regression/contracts-dfcc/test_struct_enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_struct_member_enforce/test.desc b/regression/contracts-dfcc/test_struct_member_enforce/test.desc index e9edcc77dae..6a3eb8c099e 100644 --- a/regression/contracts-dfcc/test_struct_member_enforce/test.desc +++ b/regression/contracts-dfcc/test_struct_member_enforce/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/test_struct_replace/test.desc b/regression/contracts-dfcc/test_struct_replace/test.desc index f167b955ac7..7231a54da39 100644 --- a/regression/contracts-dfcc/test_struct_replace/test.desc +++ b/regression/contracts-dfcc/test_struct_replace/test.desc @@ -1,4 +1,4 @@ -CORE +CORE dfcc-only main.c --dfcc main --replace-call-with-contract foo ^EXIT=0$ diff --git a/regression/contracts/assigns-slice-targets/main-enforce.c b/regression/contracts/assigns-slice-targets/main-enforce.c deleted file mode 100644 index 115573b17a4..00000000000 --- a/regression/contracts/assigns-slice-targets/main-enforce.c +++ /dev/null @@ -1,67 +0,0 @@ -struct st -{ - int a; - char arr1[10]; - int b; - char arr2[10]; - int c; -}; - -void foo(struct st *s, struct st *ss) - // clang-format off - __CPROVER_requires(__CPROVER_is_fresh(s, sizeof(*s))) - __CPROVER_assigns( - __CPROVER_object_upto(s->arr1, 5); - __CPROVER_object_from(s->arr2 + 5); - __CPROVER_object_whole(ss); -) -// clang-format on -{ - // PASS - s->arr1[0] = 0; - s->arr1[1] = 0; - s->arr1[2] = 0; - s->arr1[3] = 0; - s->arr1[4] = 0; - - // FAIL - s->arr1[5] = 0; - s->arr1[6] = 0; - s->arr1[7] = 0; - s->arr1[8] = 0; - s->arr1[9] = 0; - - // FAIL - s->arr2[0] = 0; - s->arr2[1] = 0; - s->arr2[2] = 0; - s->arr2[3] = 0; - s->arr2[4] = 0; - - // PASS - s->arr2[5] = 0; - s->arr2[6] = 0; - s->arr2[7] = 0; - s->arr2[8] = 0; - s->arr2[9] = 0; - - // PASS - ss->a = 0; - ss->arr1[0] = 0; - ss->arr1[7] = 0; - ss->arr1[9] = 0; - ss->b = 0; - ss->arr2[6] = 0; - ss->arr2[8] = 0; - ss->c = 0; -} - -int main() -{ - struct st s; - struct st ss; - - foo(&s, &ss); - - return 0; -} diff --git a/regression/contracts/assigns-slice-targets/main-replace.c b/regression/contracts/assigns-slice-targets/main-replace.c deleted file mode 100644 index 79d73588cc0..00000000000 --- a/regression/contracts/assigns-slice-targets/main-replace.c +++ /dev/null @@ -1,150 +0,0 @@ -struct st -{ - int a; - char arr1[10]; - int b; - char arr2[10]; - int c; -}; - -void foo(struct st *s, struct st *ss) - // clang-format off - __CPROVER_requires(__CPROVER_is_fresh(s, sizeof(*s))) - __CPROVER_assigns( - __CPROVER_object_upto(s->arr1, 5); - __CPROVER_object_from(s->arr2 + 5); - __CPROVER_object_whole(ss); - ) -// clang-format on -{ - s->arr1[0] = 0; - s->arr1[1] = 0; - s->arr1[2] = 0; - s->arr1[3] = 0; - s->arr1[4] = 0; - - s->arr2[5] = 0; - s->arr2[6] = 0; - s->arr2[7] = 0; - s->arr2[8] = 0; - s->arr2[9] = 0; -} - -int main() -{ - struct st s; - s.a = 0; - s.arr1[0] = 0; - s.arr1[1] = 0; - s.arr1[2] = 0; - s.arr1[3] = 0; - s.arr1[4] = 0; - s.arr1[5] = 0; - s.arr1[6] = 0; - s.arr1[7] = 0; - s.arr1[8] = 0; - s.arr1[9] = 0; - - s.arr2[0] = 0; - s.arr2[1] = 0; - s.arr2[2] = 0; - s.arr2[3] = 0; - s.arr2[4] = 0; - s.arr2[5] = 0; - s.arr2[6] = 0; - s.arr2[7] = 0; - s.arr2[8] = 0; - s.arr2[9] = 0; - s.c = 0; - - struct st ss; - ss.a = 0; - ss.arr1[0] = 0; - ss.arr1[1] = 0; - ss.arr1[2] = 0; - ss.arr1[3] = 0; - ss.arr1[4] = 0; - ss.arr1[5] = 0; - ss.arr1[6] = 0; - ss.arr1[7] = 0; - ss.arr1[8] = 0; - ss.arr1[9] = 0; - - ss.arr2[0] = 0; - ss.arr2[1] = 0; - ss.arr2[2] = 0; - ss.arr2[3] = 0; - ss.arr2[4] = 0; - ss.arr2[5] = 0; - ss.arr2[6] = 0; - ss.arr2[7] = 0; - ss.arr2[8] = 0; - ss.arr2[9] = 0; - ss.c = 0; - - foo(&s, &ss); - - // PASS - assert(s.a == 0); - - // FAIL - assert(s.arr1[0] == 0); - assert(s.arr1[1] == 0); - assert(s.arr1[2] == 0); - assert(s.arr1[3] == 0); - assert(s.arr1[4] == 0); - - // PASS - assert(s.arr1[5] == 0); - assert(s.arr1[6] == 0); - assert(s.arr1[7] == 0); - assert(s.arr1[8] == 0); - assert(s.arr1[9] == 0); - - // PASS - assert(s.b == 0); - - // PASS - assert(s.arr2[0] == 0); - assert(s.arr2[1] == 0); - assert(s.arr2[2] == 0); - assert(s.arr2[3] == 0); - assert(s.arr2[4] == 0); - - // FAIL - assert(s.arr2[5] == 0); - assert(s.arr2[6] == 0); - assert(s.arr2[7] == 0); - assert(s.arr2[8] == 0); - assert(s.arr2[9] == 0); - - // PASS - assert(s.c == 0); - - // FAIL - assert(ss.a == 0); - assert(ss.arr1[0] == 0); - assert(ss.arr1[1] == 0); - assert(ss.arr1[2] == 0); - assert(ss.arr1[3] == 0); - assert(ss.arr1[4] == 0); - assert(ss.arr1[5] == 0); - assert(ss.arr1[6] == 0); - assert(ss.arr1[7] == 0); - assert(ss.arr1[8] == 0); - assert(ss.arr1[9] == 0); - assert(ss.b == 0); - assert(ss.arr2[0] == 0); - assert(ss.arr2[1] == 0); - assert(ss.arr2[2] == 0); - assert(ss.arr2[3] == 0); - assert(ss.arr2[4] == 0); - assert(ss.arr2[5] == 0); - assert(ss.arr2[6] == 0); - assert(ss.arr2[7] == 0); - assert(ss.arr2[8] == 0); - assert(ss.arr2[9] == 0); - assert(ss.c == 0); - - return 0; -} diff --git a/regression/contracts/assigns-slice-targets/test-enforce.desc b/regression/contracts/assigns-slice-targets/test-enforce.desc deleted file mode 100644 index d7c221d1a86..00000000000 --- a/regression/contracts/assigns-slice-targets/test-enforce.desc +++ /dev/null @@ -1,38 +0,0 @@ -CORE -main-enforce.c ---enforce-contract foo -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)0\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)1\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)2\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)3\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)4\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)5\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)6\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)7\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)8\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr1\[\(.*\)9\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)0\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)1\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)2\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)3\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)4\] is assignable: FAILURE$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)5\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)6\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)7\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)8\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that s->arr2\[\(.*\)9\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->a is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->arr1\[\(.*\)0\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->arr1\[\(.*\)7\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->arr1\[\(.*\)9\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->b is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->arr2\[\(.*\)6\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->arr2\[\(.*\)8\] is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that ss->c is assignable: SUCCESS$ -^VERIFICATION FAILED$ -^EXIT=10$ -^SIGNAL=0$ --- --- -Checks that assigns clause checking of slice expressions works as expected when -enforcing a contract. diff --git a/regression/contracts/assigns-slice-targets/test-replace.desc b/regression/contracts/assigns-slice-targets/test-replace.desc deleted file mode 100644 index 1c7532841a1..00000000000 --- a/regression/contracts/assigns-slice-targets/test-replace.desc +++ /dev/null @@ -1,57 +0,0 @@ -CORE -main-replace.c ---replace-call-with-contract foo -^\[main.assertion.\d+\].*assertion s.a == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)0\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)1\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)2\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)3\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)4\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)5\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)6\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)7\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)8\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr1\[\(.*\)9\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion s.b == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)0\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)1\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)2\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)3\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)4\] == 0: SUCCESS$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)5\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)6\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)7\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)8\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)s.arr2\[\(.*\)9\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion s.c == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion ss.a == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)0\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)1\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)2\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)3\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)4\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)5\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)6\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)7\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)8\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr1\[\(.*\)9\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion ss.b == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)0\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)1\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)2\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)3\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)4\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)5\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)6\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)7\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)8\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion \(.*\)ss.arr2\[\(.*\)9\] == 0: FAILURE$ -^\[main.assertion.\d+\].*assertion ss.c == 0: FAILURE$ -^VERIFICATION FAILED$ -^EXIT=10$ -^SIGNAL=0$ --- --- -Checks that havocking of slice expressions works as expected when -replacing a call by a contract. We manually express frame conditions as -assertions in the main function. diff --git a/regression/contracts/assigns_enforce_01/main.c b/regression/contracts/assigns_enforce_01/main.c deleted file mode 100644 index 102a3870a72..00000000000 --- a/regression/contracts/assigns_enforce_01/main.c +++ /dev/null @@ -1,14 +0,0 @@ -int foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(__CPROVER_return_value == *x + 5) -{ - *x = *x + 0; - return *x + 5; -} - -int main() -{ - int n = 4; - n = foo(&n); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_01/test.desc b/regression/contracts/assigns_enforce_01/test.desc deleted file mode 100644 index d3774ec5dfa..00000000000 --- a/regression/contracts/assigns_enforce_01/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that verification succeeds if only expressions inside the assigns clause are assigned within the function. - -Note: For all 'enforce' tests, nothing can be assumed about the return value of the function (as the function call is not replaced at this point). - -To make such assumptions would cause verification to fail. diff --git a/regression/contracts/assigns_enforce_12/main.c b/regression/contracts/assigns_enforce_12/main.c deleted file mode 100644 index 0af9f968420..00000000000 --- a/regression/contracts/assigns_enforce_12/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void f1(int *x) __CPROVER_assigns(*x) -{ - int *a = x; - *a = 5; -} - -int main() -{ - int n = 3; - f1(&n); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_12/test.desc b/regression/contracts/assigns_enforce_12/test.desc deleted file mode 100644 index 52d002f63be..00000000000 --- a/regression/contracts/assigns_enforce_12/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that verification still succeeds if an expression in the assigns clause is written via an aliasing variable. diff --git a/regression/contracts/assigns_enforce_13/main.c b/regression/contracts/assigns_enforce_13/main.c deleted file mode 100644 index 65e7795a3b7..00000000000 --- a/regression/contracts/assigns_enforce_13/main.c +++ /dev/null @@ -1,14 +0,0 @@ -void f1(int *x, int *y) __CPROVER_assigns(*y) -{ - int *a = x; - *a = 5; -} - -int main() -{ - int m = 3; - int n = 3; - f1(&n, &m); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_13/test.desc b/regression/contracts/assigns_enforce_13/test.desc deleted file mode 100644 index d147fbdfbd4..00000000000 --- a/regression/contracts/assigns_enforce_13/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- --- -This test checks that verification fails if an expression outside of the assigns clause is written via an aliasing local variable. diff --git a/regression/contracts/assigns_enforce_14/main.c b/regression/contracts/assigns_enforce_14/main.c deleted file mode 100644 index 9d205896302..00000000000 --- a/regression/contracts/assigns_enforce_14/main.c +++ /dev/null @@ -1,19 +0,0 @@ -int z; - -// z is not assigned, but it *may* be assigned. -// The assigns clause does not need to exactly match the -// set of variables which are assigned in the function. -int foo(int *x) __CPROVER_assigns(z, *x) - __CPROVER_ensures(__CPROVER_return_value == *x + 5) -{ - *x = *x + 0; - return *x + 5; -} - -int main() -{ - int n = 4; - n = foo(&n); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_14/test.desc b/regression/contracts/assigns_enforce_14/test.desc deleted file mode 100644 index d3774ec5dfa..00000000000 --- a/regression/contracts/assigns_enforce_14/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that verification succeeds if only expressions inside the assigns clause are assigned within the function. - -Note: For all 'enforce' tests, nothing can be assumed about the return value of the function (as the function call is not replaced at this point). - -To make such assumptions would cause verification to fail. diff --git a/regression/contracts/assigns_enforce_16/main.c b/regression/contracts/assigns_enforce_16/main.c deleted file mode 100644 index a042f3aaba7..00000000000 --- a/regression/contracts/assigns_enforce_16/main.c +++ /dev/null @@ -1,16 +0,0 @@ -void foo(int *xp) __CPROVER_assigns(*xp) -{ - { - int y; - y = 2; - } - int z = 3; - *xp = 1; -} - -int main() -{ - int *xp = malloc(sizeof(*xp)); - foo(xp); - return 0; -} diff --git a/regression/contracts/assigns_enforce_16/test.desc b/regression/contracts/assigns_enforce_16/test.desc deleted file mode 100644 index 508d093fe56..00000000000 --- a/regression/contracts/assigns_enforce_16/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo _ --pointer-primitive-check -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether verification fails when enforcing a contract -for functions, without assigns clauses, that modify an input. diff --git a/regression/contracts/assigns_enforce_17/main.c b/regression/contracts/assigns_enforce_17/main.c deleted file mode 100644 index acd818b56d7..00000000000 --- a/regression/contracts/assigns_enforce_17/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include - -int x; - -void pure() __CPROVER_assigns() -{ - int x; - x++; -} - -int main() -{ - x = 0; - pure(); - assert(x == 0); - return 0; -} diff --git a/regression/contracts/assigns_enforce_17/test.desc b/regression/contracts/assigns_enforce_17/test.desc deleted file mode 100644 index 0eb925b29b7..00000000000 --- a/regression/contracts/assigns_enforce_17/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract pure -^EXIT=0$ -^SIGNAL=0$ -^\[main.assertion.\d+\] line \d+ assertion x \=\= 0: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether verification correctly distinguishes local variables -and global variables with same name when checking frame conditions. diff --git a/regression/contracts/assigns_enforce_23/main.c b/regression/contracts/assigns_enforce_23/main.c deleted file mode 100644 index 1dba3cfb6da..00000000000 --- a/regression/contracts/assigns_enforce_23/main.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include - -typedef struct -{ - uint8_t *buf; - size_t size; -} blob; - -void foo(blob *b, uint8_t *value) - // clang-format off -__CPROVER_requires(b->size == 5) -__CPROVER_assigns(__CPROVER_object_whole(b->buf)) -__CPROVER_assigns(__CPROVER_object_whole(value)) -__CPROVER_ensures(b->buf[0] == 1) -__CPROVER_ensures(b->buf[1] == 1) -__CPROVER_ensures(b->buf[2] == 1) -__CPROVER_ensures(b->buf[3] == 1) -__CPROVER_ensures(b->buf[4] == 1) -// clang-format on -{ - b->buf[0] = *value; - b->buf[1] = *value; - b->buf[2] = *value; - b->buf[3] = *value; - b->buf[4] = *value; - - *value = 2; -} - -int main() -{ - blob b; - b.size = 5; - b.buf = malloc(b.size * (sizeof(*(b.buf)))); - uint8_t value = 1; - - foo(&b, &value); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_23/test.desc b/regression/contracts/assigns_enforce_23/test.desc deleted file mode 100644 index be44bf08381..00000000000 --- a/regression/contracts/assigns_enforce_23/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that __CPROVER_object_whole can be used both on arrays and scalars. diff --git a/regression/contracts/assigns_enforce_address_of/main.c b/regression/contracts/assigns_enforce_address_of/main.c deleted file mode 100644 index c7762c97037..00000000000 --- a/regression/contracts/assigns_enforce_address_of/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(&x) -{ - *x = 0; - return 0; -} - -int main() -{ - int x; - foo(&x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_address_of/test.desc b/regression/contracts/assigns_enforce_address_of/test.desc deleted file mode 100644 index 5295d870506..00000000000 --- a/regression/contracts/assigns_enforce_address_of/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR$ --- --- -Check that address_of expressions are rejected in assigns clauses. diff --git a/regression/contracts/assigns_enforce_arrays_01/main.c b/regression/contracts/assigns_enforce_arrays_01/main.c deleted file mode 100644 index ee8405c3ce4..00000000000 --- a/regression/contracts/assigns_enforce_arrays_01/main.c +++ /dev/null @@ -1,16 +0,0 @@ -void f1(int a[], int len) __CPROVER_assigns() -{ - int b[10]; - a = b; - int *indr = a + 2; - *indr = 5; - a[5] = 2; -} - -int main() -{ - int arr[10]; - f1(arr, 10); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_arrays_01/test.desc b/regression/contracts/assigns_enforce_arrays_01/test.desc deleted file mode 100644 index 9462610d434..00000000000 --- a/regression/contracts/assigns_enforce_arrays_01/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks their assigns clause behavior when it reasons (indirectly) -over a freshly-allocated variable. diff --git a/regression/contracts/assigns_enforce_arrays_03/main.c b/regression/contracts/assigns_enforce_arrays_03/main.c deleted file mode 100644 index 2511fbe4103..00000000000 --- a/regression/contracts/assigns_enforce_arrays_03/main.c +++ /dev/null @@ -1,12 +0,0 @@ -void assign_out_under(int a[], int len) __CPROVER_assigns() -{ - a[1] = 5; -} - -int main() -{ - int arr[10]; - assign_out_under(arr, 10); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_arrays_03/test.desc b/regression/contracts/assigns_enforce_arrays_03/test.desc deleted file mode 100644 index f6e98f0b4aa..00000000000 --- a/regression/contracts/assigns_enforce_arrays_03/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract assign_out_under -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- --- -Checks whether verification fails when a function has an array -as parameter, an empty assigns clause and attempts to modify the object -pointed to by the pointer. diff --git a/regression/contracts/assigns_enforce_arrays_04/main.c b/regression/contracts/assigns_enforce_arrays_04/main.c deleted file mode 100644 index 0ac8d6f93a6..00000000000 --- a/regression/contracts/assigns_enforce_arrays_04/main.c +++ /dev/null @@ -1,19 +0,0 @@ -void assigns_single(int a[], int len) -{ - int i; - __CPROVER_assume(0 <= i && i < len); - a[i] = 0; -} - -void uses_assigns(int a[], int len) __CPROVER_assigns(__CPROVER_object_whole(a)) -{ - assigns_single(a, len); -} - -int main() -{ - int arr[10]; - uses_assigns(arr, 10); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_arrays_04/test.desc b/regression/contracts/assigns_enforce_arrays_04/test.desc deleted file mode 100644 index e2dd274fa7d..00000000000 --- a/regression/contracts/assigns_enforce_arrays_04/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract uses_assigns -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether verification succeeds when an array is assigned through -calls to functions with array assigns clauses which are compatible with -that of the caller. diff --git a/regression/contracts/assigns_enforce_conditional_non_lvalue_target/main.c b/regression/contracts/assigns_enforce_conditional_non_lvalue_target/main.c deleted file mode 100644 index ca2fb2d98a0..00000000000 --- a/regression/contracts/assigns_enforce_conditional_non_lvalue_target/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -int *identity(int *ptr) -{ - return ptr; -} - -int foo(bool a, int *x, int offset) __CPROVER_assigns(a : !x) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_non_lvalue_target/test.desc b/regression/contracts/assigns_enforce_conditional_non_lvalue_target/test.desc deleted file mode 100644 index 386c2c0b75d..00000000000 --- a/regression/contracts/assigns_enforce_conditional_non_lvalue_target/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that non-lvalue targets are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/main.c b/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/main.c deleted file mode 100644 index 3021057d429..00000000000 --- a/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -int *identity(int *ptr) -{ - return ptr; -} - -int foo(bool a, int *x, int *y) __CPROVER_assigns(a : !x, *y) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/test.desc b/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/test.desc deleted file mode 100644 index 386c2c0b75d..00000000000 --- a/regression/contracts/assigns_enforce_conditional_non_lvalue_target_list/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that non-lvalue targets are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_condition/main.c b/regression/contracts/assigns_enforce_conditional_side_effect_condition/main.c deleted file mode 100644 index 3242a0914b8..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_condition/main.c +++ /dev/null @@ -1,20 +0,0 @@ -#include - -int foo(int a, int *x, int *y) __CPROVER_assigns(a++ : *x) -{ - if(a) - { - *x = 0; - } - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_condition/test.desc b/regression/contracts/assigns_enforce_conditional_side_effect_condition/test.desc deleted file mode 100644 index 5969b0728d2..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_condition/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: side-effects not allowed in assigns clause conditions$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that side-effect expressions in target conditions cause hard errors. diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_target/main.c b/regression/contracts/assigns_enforce_conditional_side_effect_target/main.c deleted file mode 100644 index 3fe8b0569c8..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_target/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -int foo(bool a, int *x, int *y) __CPROVER_assigns(a : *x++) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_target/test.desc b/regression/contracts/assigns_enforce_conditional_side_effect_target/test.desc deleted file mode 100644 index cb413830d56..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_target/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: side-effects not allowed in assigns clause targets$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that side-effect expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_target_list/main.c b/regression/contracts/assigns_enforce_conditional_side_effect_target_list/main.c deleted file mode 100644 index a83f23b4a10..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_target_list/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -int foo(bool a, int *x, int *y) __CPROVER_assigns(a : *x++, *y) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_side_effect_target_list/test.desc b/regression/contracts/assigns_enforce_conditional_side_effect_target_list/test.desc deleted file mode 100644 index cb413830d56..00000000000 --- a/regression/contracts/assigns_enforce_conditional_side_effect_target_list/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: side-effects not allowed in assigns clause targets$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that side-effect expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_ternary_target/main.c b/regression/contracts/assigns_enforce_conditional_ternary_target/main.c deleted file mode 100644 index 54a0fb18a54..00000000000 --- a/regression/contracts/assigns_enforce_conditional_ternary_target/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -int foo(bool a, int *x, int *y) __CPROVER_assigns(a : (x ? *x : *y)) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_ternary_target/test.desc b/regression/contracts/assigns_enforce_conditional_ternary_target/test.desc deleted file mode 100644 index 43a8515c6b3..00000000000 --- a/regression/contracts/assigns_enforce_conditional_ternary_target/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: ternary expressions not allowed in assigns clause targets$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that ternary expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_ternary_target_list/main.c b/regression/contracts/assigns_enforce_conditional_ternary_target_list/main.c deleted file mode 100644 index 9ac5893434e..00000000000 --- a/regression/contracts/assigns_enforce_conditional_ternary_target_list/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -int foo(bool a, int *x, int *y) __CPROVER_assigns(a : *x, (x ? *x : *y)) -{ - return 0; -} - -int main() -{ - bool a; - int x; - int y; - - foo(a, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_ternary_target_list/test.desc b/regression/contracts/assigns_enforce_conditional_ternary_target_list/test.desc deleted file mode 100644 index 43a8515c6b3..00000000000 --- a/regression/contracts/assigns_enforce_conditional_ternary_target_list/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: ternary expressions not allowed in assigns clause targets$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that ternary expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_void_target/main.c b/regression/contracts/assigns_enforce_conditional_void_target/main.c deleted file mode 100644 index 5eb7ce636b4..00000000000 --- a/regression/contracts/assigns_enforce_conditional_void_target/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -int foo(bool a, void *x) __CPROVER_assigns(a : *x) -{ - return 0; -} - -int main() -{ - bool a; - int x; - - foo(a, &x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_void_target/test.desc b/regression/contracts/assigns_enforce_conditional_void_target/test.desc deleted file mode 100644 index 23d56a07949..00000000000 --- a/regression/contracts/assigns_enforce_conditional_void_target/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: (dereferencing void pointer|lvalue expressions with void type not allowed in assigns clauses)$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that void-typed expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_conditional_void_target_list/main.c b/regression/contracts/assigns_enforce_conditional_void_target_list/main.c deleted file mode 100644 index 0d6c98acd68..00000000000 --- a/regression/contracts/assigns_enforce_conditional_void_target_list/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -int foo(bool a, void *x, int *y) __CPROVER_assigns(a : *x, *y) -{ - return 0; -} - -int main() -{ - bool a; - int x; - - foo(a, &x, &x); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_conditional_void_target_list/test.desc b/regression/contracts/assigns_enforce_conditional_void_target_list/test.desc deleted file mode 100644 index 23d56a07949..00000000000 --- a/regression/contracts/assigns_enforce_conditional_void_target_list/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.* error: (dereferencing void pointer|lvalue expressions with void type not allowed in assigns clauses)$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks that void-typed expressions are rejected from conditional targets. diff --git a/regression/contracts/assigns_enforce_function_calls/main.c b/regression/contracts/assigns_enforce_function_calls/main.c deleted file mode 100644 index c4ce468f413..00000000000 --- a/regression/contracts/assigns_enforce_function_calls/main.c +++ /dev/null @@ -1,16 +0,0 @@ -int *bar(int *x) -{ - return *x; -} - -int foo(int *x) __CPROVER_assigns(bar(x)) -{ - *x = 0; - return 0; -} - -int main() -{ - int x; - foo(&x); -} diff --git a/regression/contracts/assigns_enforce_function_calls/test.desc b/regression/contracts/assigns_enforce_function_calls/test.desc deleted file mode 100644 index b3b4c031205..00000000000 --- a/regression/contracts/assigns_enforce_function_calls/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: expecting void return type for function 'bar' called in assigns clause$ -^CONVERSION ERROR$ --- --- -Check that non-void function call expressions are rejected in assigns clauses. diff --git a/regression/contracts/assigns_enforce_function_calls_ignored/main.c b/regression/contracts/assigns_enforce_function_calls_ignored/main.c deleted file mode 100644 index 01faaaa4d0b..00000000000 --- a/regression/contracts/assigns_enforce_function_calls_ignored/main.c +++ /dev/null @@ -1,17 +0,0 @@ -void bar(int *x) -{ - if(x) - __CPROVER_typed_target(x); -} - -int foo(int *x) __CPROVER_assigns(bar(x)) -{ - *x = 0; - return 0; -} - -int main() -{ - int x; - foo(&x); -} diff --git a/regression/contracts/assigns_enforce_function_calls_ignored/test.desc b/regression/contracts/assigns_enforce_function_calls_ignored/test.desc deleted file mode 100644 index 2b8cf826108..00000000000 --- a/regression/contracts/assigns_enforce_function_calls_ignored/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^call to function 'bar' in assigns clause not supported yet$ -^EXIT=(127|134)$ -^SIGNAL=0$ --- --- -Check that void function call expressions in assigns clauses make -instrumentation fail. diff --git a/regression/contracts/assigns_enforce_literal/main.c b/regression/contracts/assigns_enforce_literal/main.c deleted file mode 100644 index ee309bb6101..00000000000 --- a/regression/contracts/assigns_enforce_literal/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(12) -{ - *x = 0; - return 0; -} - -int main() -{ - int x; - foo(&x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_literal/test.desc b/regression/contracts/assigns_enforce_literal/test.desc deleted file mode 100644 index 0e84a9b8555..00000000000 --- a/regression/contracts/assigns_enforce_literal/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR$ --- --- -Check that literal constants are rejected from assigns clauses. diff --git a/regression/contracts/assigns_enforce_malloc_01/main.c b/regression/contracts/assigns_enforce_malloc_01/main.c deleted file mode 100644 index 7896a93b158..00000000000 --- a/regression/contracts/assigns_enforce_malloc_01/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -int f(int *a) __CPROVER_assigns() -{ - a = (int *)malloc(sizeof(int)); - *a = 5; -} - -int main() -{ - int m = 4; - f(&m); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_malloc_01/test.desc b/regression/contracts/assigns_enforce_malloc_01/test.desc deleted file mode 100644 index ae3a0536bf1..00000000000 --- a/regression/contracts/assigns_enforce_malloc_01/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract f -^EXIT=0$ -^SIGNAL=0$ -^\[f\.assigns.\d+\] line \d+ Check that \*a is assignable: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that verification succeeds when a formal parameter -with a pointer type is first updated to point to a locally malloc'd object -before being assigned to. diff --git a/regression/contracts/assigns_enforce_malloc_03/main.c b/regression/contracts/assigns_enforce_malloc_03/main.c deleted file mode 100644 index 0c45c0b99a5..00000000000 --- a/regression/contracts/assigns_enforce_malloc_03/main.c +++ /dev/null @@ -1,18 +0,0 @@ -#include - -void foo() __CPROVER_assigns() -{ - char *loc1 = malloc(1); - char *loc2 = malloc(1); - int c; - if(c) - *loc1 = 0; - else - *loc2 = 0; -} - -int main() -{ - foo(); - return 0; -} diff --git a/regression/contracts/assigns_enforce_malloc_03/test.desc b/regression/contracts/assigns_enforce_malloc_03/test.desc deleted file mode 100644 index 48d237b61af..00000000000 --- a/regression/contracts/assigns_enforce_malloc_03/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^\[foo.assigns.\d+\].* Check that \*loc1 is assignable: SUCCESS$ -^\[foo.assigns.\d+\].* Check that \*loc2 is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ -^EXIT=0$ -^SIGNAL=0$ --- --- -Checks that multiple malloc'd objects are tracked by assigns clause checking. diff --git a/regression/contracts/assigns_enforce_multi_file_01/header.h b/regression/contracts/assigns_enforce_multi_file_01/header.h deleted file mode 100644 index 170fd37498c..00000000000 --- a/regression/contracts/assigns_enforce_multi_file_01/header.h +++ /dev/null @@ -1,22 +0,0 @@ -void f1(int *x1, int *y1, int *z1); - -void f2(int *x2, int *y2, int *z2); - -void f3(int *x3, int *y3, int *z3); - -void f1(int *x1, int *y1, int *z1) __CPROVER_assigns(*x1, *y1, *z1) -{ - f2(x1, y1, z1); -} - -void f2(int *x2, int *y2, int *z2) __CPROVER_assigns(*x2, *y2, *z2) -{ - f3(x2, y2, z2); -} - -void f3(int *x3, int *y3, int *z3) __CPROVER_assigns(*y3, *z3) -{ - *x3 = *x3 + 1; - *y3 = *y3 + 1; - *z3 = *z3 + 1; -} diff --git a/regression/contracts/assigns_enforce_multi_file_01/main.c b/regression/contracts/assigns_enforce_multi_file_01/main.c deleted file mode 100644 index 01e3878af6e..00000000000 --- a/regression/contracts/assigns_enforce_multi_file_01/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "header.h" - -int main() -{ - int p = 1; - int q = 2; - int r = 3; - f1(&p, &q, &r); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_multi_file_01/test.desc b/regression/contracts/assigns_enforce_multi_file_01/test.desc deleted file mode 100644 index a62971b4be2..00000000000 --- a/regression/contracts/assigns_enforce_multi_file_01/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test replicates the behavior of assigns_enforce_04, but separates -the function headers and contracts into a separate file header.h. diff --git a/regression/contracts/assigns_enforce_object_wrong_args/main.c b/regression/contracts/assigns_enforce_object_wrong_args/main.c deleted file mode 100644 index 563ae82cf5f..00000000000 --- a/regression/contracts/assigns_enforce_object_wrong_args/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include -#include - -int baz(int *x) __CPROVER_assigns(__CPROVER_object_whole()) -{ - *x = 0; - return 0; -} - -int main() -{ - int x; - baz(&x); -} diff --git a/regression/contracts/assigns_enforce_object_wrong_args/test.desc b/regression/contracts/assigns_enforce_object_wrong_args/test.desc deleted file mode 100644 index 03d51e2a1c8..00000000000 --- a/regression/contracts/assigns_enforce_object_wrong_args/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract baz -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: wrong number of function arguments: expected 1, but got 0$ -^CONVERSION ERROR$ --- --- -Check that incorrect uses of `__CPROVER_object_whole` in assigns clauses are detected. diff --git a/regression/contracts/assigns_enforce_offsets_1/main.c b/regression/contracts/assigns_enforce_offsets_1/main.c deleted file mode 100644 index ec36da4817f..00000000000 --- a/regression/contracts/assigns_enforce_offsets_1/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(*(x + 1)) -{ - // should fail because we write before *(x+1) - *x = 0; - return 0; -} - -int main() -{ - int x; - foo(&x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_offsets_1/test.desc b/regression/contracts/assigns_enforce_offsets_1/test.desc deleted file mode 100644 index 875aaf1a281..00000000000 --- a/regression/contracts/assigns_enforce_offsets_1/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- --- -Check that a write at *x fails when the assigns clause specifies *(x + 1) and -the actual underlying object is of size 1. diff --git a/regression/contracts/assigns_enforce_offsets_3/main.c b/regression/contracts/assigns_enforce_offsets_3/main.c deleted file mode 100644 index 977d74b6f52..00000000000 --- a/regression/contracts/assigns_enforce_offsets_3/main.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(*(x + 1)) -{ - // should pass - *(x + 1) = 0; - return 0; -} - -int main() -{ - int *x = malloc(2 * sizeof(int)); - *x = 0; - *(x + 1) = 12; - foo(x); - assert(*(x + 1) == 0); - return 0; -} diff --git a/regression/contracts/assigns_enforce_offsets_3/test.desc b/regression/contracts/assigns_enforce_offsets_3/test.desc deleted file mode 100644 index 778a0b2b460..00000000000 --- a/regression/contracts/assigns_enforce_offsets_3/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Check that a write at *x fails when the assigns clause specifies *(x + 1) and the actual underlying object is of size 1. diff --git a/regression/contracts/assigns_enforce_side_effects_1/main.c b/regression/contracts/assigns_enforce_side_effects_1/main.c deleted file mode 100644 index bfbb88df565..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_1/main.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include - -int foo(bool a, int *x, long long *y) __CPROVER_assigns(*(a ? x : y++)) -{ - if(a) - { - *x = 0; - } - else - { - *y = 0; - } - return 0; -} - -int main() -{ - bool a; - int x; - long y; - - foo(true, &x, &y); - return 0; -} diff --git a/regression/contracts/assigns_enforce_side_effects_1/test.desc b/regression/contracts/assigns_enforce_side_effects_1/test.desc deleted file mode 100644 index bfcae45fcfe..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_1/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -activate-multi-line-match -.*error: (dereferencing void pointer|lvalue expressions with void type not allowed in assigns clauses) -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Check that expressions with void type, side effects and/or ternay operators are -rejected from assigns clauses. diff --git a/regression/contracts/assigns_enforce_side_effects_2/main.c b/regression/contracts/assigns_enforce_side_effects_2/main.c deleted file mode 100644 index fe09acb7cb8..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_2/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(++x) -{ - *x = 2; - return 0; -} - -int main() -{ - int x; - - foo(&x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_side_effects_2/test.desc b/regression/contracts/assigns_enforce_side_effects_2/test.desc deleted file mode 100644 index ae70fd05475..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_2/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR$ --- --- -Check that expressions with side effects are rejected from assigns clauses. diff --git a/regression/contracts/assigns_enforce_side_effects_3/main.c b/regression/contracts/assigns_enforce_side_effects_3/main.c deleted file mode 100644 index cd4f0f51154..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_3/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include - -int foo(int *x) __CPROVER_assigns(x++) -{ - *x = 2; - return 0; -} - -int main() -{ - int x; - - foo(&x); - return 0; -} diff --git a/regression/contracts/assigns_enforce_side_effects_3/test.desc b/regression/contracts/assigns_enforce_side_effects_3/test.desc deleted file mode 100644 index ae70fd05475..00000000000 --- a/regression/contracts/assigns_enforce_side_effects_3/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR$ --- --- -Check that expressions with side effects are rejected from assigns clauses. diff --git a/regression/contracts/assigns_enforce_structs_01/main.c b/regression/contracts/assigns_enforce_structs_01/main.c deleted file mode 100644 index ee4a59c2b1f..00000000000 --- a/regression/contracts/assigns_enforce_structs_01/main.c +++ /dev/null @@ -1,22 +0,0 @@ -#include - -struct pair -{ - int x; - int y; -}; - -int f(int *a) __CPROVER_assigns() -{ - struct pair *p = (struct pair *)malloc(sizeof(struct pair)); - a = &(p->y); - *a = 5; -} - -int main() -{ - int m = 4; - f(&m); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_structs_01/test.desc b/regression/contracts/assigns_enforce_structs_01/test.desc deleted file mode 100644 index a2e87391c9c..00000000000 --- a/regression/contracts/assigns_enforce_structs_01/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract f -^EXIT=0$ -^SIGNAL=0$ -^\[f.assigns.\d+\] line \d+ Check that \*a is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^\[.*assigns.*\].*: FAILURE$ --- -Checks whether verification succeeds when a pointer deref that is not -specified in the assigns clause is first pointed at a member of a -locally malloc'd struct before being assigned. diff --git a/regression/contracts/assigns_enforce_structs_02/main.c b/regression/contracts/assigns_enforce_structs_02/main.c deleted file mode 100644 index fd544aa9148..00000000000 --- a/regression/contracts/assigns_enforce_structs_02/main.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -struct pair -{ - int x; - int y; -}; - -struct pair_of_pairs -{ - struct pair p1; - struct pair p2; -}; - -int f(int *a) __CPROVER_assigns() -{ - struct pair_of_pairs *pop = - (struct pair_of_pairs *)malloc(sizeof(struct pair_of_pairs)); - a = &(pop->p2.x); - *a = 5; -} - -int main() -{ - int m = 4; - f(&m); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_structs_02/test.desc b/regression/contracts/assigns_enforce_structs_02/test.desc deleted file mode 100644 index 2efece83723..00000000000 --- a/regression/contracts/assigns_enforce_structs_02/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract f -^EXIT=0$ -^SIGNAL=0$ -^\[f.assigns.\d+\] line \d+ Check that \*a is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^\[.*assigns.*\].*: FAILURE$ --- -Checks whether verification succeeds when a pointer deref that is not -specified in the assigns clause is first pointed at a member of a locally -malloc'd struct before being assigned (with extra nesting). diff --git a/regression/contracts/assigns_enforce_structs_03/main.c b/regression/contracts/assigns_enforce_structs_03/main.c deleted file mode 100644 index a4d282edc25..00000000000 --- a/regression/contracts/assigns_enforce_structs_03/main.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -struct pair -{ - int x; - int y; -}; - -struct pair_of_pairs -{ - struct pair p1; - struct pair p2; -}; - -int f(struct pair *a) __CPROVER_assigns() -{ - struct pair_of_pairs *pop = - (struct pair_of_pairs *)malloc(sizeof(struct pair_of_pairs)); - a = &(pop->p2); - a->y = 5; -} - -int main() -{ - struct pair m; - f(&m); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_structs_03/test.desc b/regression/contracts/assigns_enforce_structs_03/test.desc deleted file mode 100644 index 0d57241131b..00000000000 --- a/regression/contracts/assigns_enforce_structs_03/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---enforce-contract f -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether verification succeeds when a member of formal parameter -(with type of pointer to struct) outside of the assigns clause is assigned -after being pointed at the location of a member sub-struct of a freshly -allocated struct before being assigned. This is meant to show that all -contained members (and their contained members) of assignable structs -are valid to assign. diff --git a/regression/contracts/assigns_enforce_structs_05/main.c b/regression/contracts/assigns_enforce_structs_05/main.c deleted file mode 100644 index c0223382cbb..00000000000 --- a/regression/contracts/assigns_enforce_structs_05/main.c +++ /dev/null @@ -1,27 +0,0 @@ -#include - -struct pair -{ - int x[3]; - int y; -}; - -int f1(struct pair *p) __CPROVER_assigns(p->x) -{ - p->y = 2; - p->x[0] = 0; - p->x[1] = 1; - p->x[2] = 2; - return 0; -} - -int main() -{ - struct pair p = {0}; - f1(&p); - assert(p.y == 2); - assert(p.x[0] == 0); - assert(p.x[1] == 1); - assert(p.x[2] == 2); - return 0; -} diff --git a/regression/contracts/assigns_enforce_structs_05/test.desc b/regression/contracts/assigns_enforce_structs_05/test.desc deleted file mode 100644 index 0220675ec2a..00000000000 --- a/regression/contracts/assigns_enforce_structs_05/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=10$ -^SIGNAL=0$ -^\[f1.assigns.\d+\] line \d+ Check that p->y is assignable: FAILURE$ -^\[f1.assigns.\d+\] line \d+ Check that p->x\[\(.*\)0\] is assignable: SUCCESS$ -^\[f1.assigns.\d+\] line \d+ Check that p->x\[\(.*\)1\] is assignable: SUCCESS$ -^\[f1.assigns.\d+\] line \d+ Check that p->x\[\(.*\)2\] is assignable: SUCCESS$ -^VERIFICATION FAILED$ --- --- -Checks whether CBMC properly evaluates write set of members -from the same object. In this case, we have an assigns clause -with a struct member `x[3]` and an assignment to the struct member `y`. -CBMC must considers only the region of `x[3]` is assignable. diff --git a/regression/contracts/assigns_function_pointer/main.c b/regression/contracts/assigns_function_pointer/main.c deleted file mode 100644 index e17486bebfb..00000000000 --- a/regression/contracts/assigns_function_pointer/main.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -int x; - -struct fptr_t -{ - void (*f)(); -}; - -void foo() -{ - x = 1; -} - -void foofoo() -{ - x = 2; -} - -void bar(struct fptr_t *s, void (**f)()) __CPROVER_assigns(s->f, *f) -{ - s->f = &foo; - *f = &foofoo; -} - -int main() -{ - x = 0; - struct fptr_t s; - void (*f)(); - bar(&s, &f); - s.f(); - assert(x == 1); - f(); - assert(x == 2); - return 0; -} diff --git a/regression/contracts/assigns_function_pointer/test.desc b/regression/contracts/assigns_function_pointer/test.desc deleted file mode 100644 index c8785da771b..00000000000 --- a/regression/contracts/assigns_function_pointer/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract bar -^EXIT=0$ -^SIGNAL=0$ -^\[bar.assigns.\d+\] line \d+ Check that s->f is assignable: SUCCESS$ -^\[bar.assigns.\d+\] line \d+ Check that \*f is assignable: SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion x \=\= 1: SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion x \=\= 2: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -Checks whether assigns clause accepts function pointers -and pointers to function pointers. diff --git a/regression/contracts/assigns_replace_01/main.c b/regression/contracts/assigns_replace_01/main.c deleted file mode 100644 index d3f93979d10..00000000000 --- a/regression/contracts/assigns_replace_01/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -void foo(int *x) __CPROVER_assigns(*x) -{ - *x = 7; -} - -int main() -{ - int n = 6; - foo(&n); - assert(n == 7); - assert(n == 6); - return 0; -} diff --git a/regression/contracts/assigns_replace_01/test.desc b/regression/contracts/assigns_replace_01/test.desc deleted file mode 100644 index 1049a54f07d..00000000000 --- a/regression/contracts/assigns_replace_01/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^EXIT=10$ -^SIGNAL=0$ -assertion n == 7: FAILURE -assertion n == 6: FAILURE -^VERIFICATION FAILED$ --- --- -This test checks that a variable inside the assigns clause is havocked. diff --git a/regression/contracts/assigns_replace_03/main.c b/regression/contracts/assigns_replace_03/main.c deleted file mode 100644 index c93ac4e2ebd..00000000000 --- a/regression/contracts/assigns_replace_03/main.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -int y; -double z; - -void bar(char *c) __CPROVER_assigns(y, z, *c) __CPROVER_ensures(*c == 6) -{ -} - -int main() -{ - char *b = malloc(sizeof(*b)); - bar(b); - assert(*b == 6); - - return 0; -} diff --git a/regression/contracts/assigns_replace_03/test.desc b/regression/contracts/assigns_replace_03/test.desc deleted file mode 100644 index d0c00130764..00000000000 --- a/regression/contracts/assigns_replace_03/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---replace-call-with-contract bar _ --pointer-primitive-check -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that a havocked variable can be constrained by a function post-condition. diff --git a/regression/contracts/assigns_replace_04/main.c b/regression/contracts/assigns_replace_04/main.c deleted file mode 100644 index a462e9cdc84..00000000000 --- a/regression/contracts/assigns_replace_04/main.c +++ /dev/null @@ -1,34 +0,0 @@ -#include - -void f2(int *x2, int *y2) __CPROVER_assigns(*x2) __CPROVER_ensures(*x2 == 10) -{ - *x2 = 10; -} - -void f3(int *x3, int *y3) __CPROVER_assigns(*x3) __CPROVER_ensures(*x3 > 100) -{ - *x3 = 101; -} - -int main() -{ - int p = 1; - int q = 2; - - for(int i = 0; i < 5; ++i) - { - if(p < 3) - { - f2(&p, &q); - } - else - { - f3(&p, &q); - } - } - assert(p > 100); - assert(q == 2); - __CPROVER_assert(0, "reachability test"); - - return 0; -} diff --git a/regression/contracts/assigns_replace_04/test.desc b/regression/contracts/assigns_replace_04/test.desc deleted file mode 100644 index 99b62a36707..00000000000 --- a/regression/contracts/assigns_replace_04/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---replace-call-with-contract f2 --replace-call-with-contract f3 -main.c function main -^\[.*\d+\] line 29 assertion p > 100: SUCCESS$ -^\[.*\d+\] line 30 assertion q == 2: SUCCESS$ -^\[.*\d+\] line 31 reachability test: FAILURE$ -^\*\* 1 of \d+ failed -^VERIFICATION FAILED$ -^EXIT=10$ -^SIGNAL=0$ --- --- -This test checks that replacing function calls with their contracts within a -loop, when the contracts impose contradictory post conditions at different loop -iterations on a same program variable, do not cause vacuity. diff --git a/regression/contracts/assigns_replace_05/main.c b/regression/contracts/assigns_replace_05/main.c deleted file mode 100644 index 500edd9b80b..00000000000 --- a/regression/contracts/assigns_replace_05/main.c +++ /dev/null @@ -1,34 +0,0 @@ -#include - -void f2(int *x2, int *y2) __CPROVER_assigns(*x2) __CPROVER_ensures(*x2 < 5) -{ - *x2 = 1; -} - -void f3(int *x3, int *y3) __CPROVER_ensures(*x3 > 100) -{ - *x3 = 101; -} - -int main() -{ - int p = 1; - int q = 2; - - for(int i = 0; i < 5; ++i) - { - if(i < 3) - { - f2(&p, &q); - } - else - { - f3(&p, &q); - } - } - assert(p < 0); - assert(q == 32); - __CPROVER_assert(0, "reachability test"); - - return 0; -} diff --git a/regression/contracts/assigns_replace_05/test.desc b/regression/contracts/assigns_replace_05/test.desc deleted file mode 100644 index 1e11b3be2dd..00000000000 --- a/regression/contracts/assigns_replace_05/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---replace-call-with-contract f2 --replace-call-with-contract f3 -main.c function main -^\[.*\d+\] line 29 assertion p < 0: SUCCESS$ -^\[.*\d+\] line 30 assertion q == 32: SUCCESS$ -^\[.*\d+\] line 31 reachability test: SUCCESS$ -^VERIFICATION SUCCESSFUL$ -^EXIT=0$ -^SIGNAL=0$ --- --- -This test demonstrates that replacing a function call with a contract that has -an empty assigns clause and a post condition involving its input parameters can -causes vacuous proofs. Checking the contract against the function would fail -the assigns clause checks. *This is not a bug*. diff --git a/regression/contracts/assigns_replace_06/main.c b/regression/contracts/assigns_replace_06/main.c deleted file mode 100644 index 60633d89ed5..00000000000 --- a/regression/contracts/assigns_replace_06/main.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -void foo(char c[]) __CPROVER_assigns(__CPROVER_object_whole(c)) -{ -} - -void bar(char *d) __CPROVER_assigns(*d) -{ -} - -int main() -{ - char b[4] = {'a', 'b', 'c', 'd'}; - - foo(b); - - assert(b[0] == 'a'); - assert(b[1] == 'b'); - assert(b[2] == 'c'); - assert(b[3] == 'd'); - - b[1] = '1'; - b[3] = '3'; - - bar(b + 3); - - assert(b[0] == 'a'); - assert(b[1] == '1'); - assert(b[2] == 'c'); - assert(b[3] == '3'); -} diff --git a/regression/contracts/assigns_replace_06/test.desc b/regression/contracts/assigns_replace_06/test.desc deleted file mode 100644 index b2136f067cc..00000000000 --- a/regression/contracts/assigns_replace_06/test.desc +++ /dev/null @@ -1,19 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo --replace-call-with-contract bar _ --pointer-primitive-check -^\[main.assertion.1\] line \d+ assertion b\[0\] == 'a': FAILURE$ -^\[main.assertion.2\] line \d+ assertion b\[1\] == 'b': FAILURE$ -^\[main.assertion.3\] line \d+ assertion b\[2\] == 'c': FAILURE$ -^\[main.assertion.4\] line \d+ assertion b\[3\] == 'd': FAILURE$ -^\[main.assertion.5\] line \d+ assertion b\[0\] == 'a': FAILURE$ -^\[main.assertion.6\] line \d+ assertion b\[1\] == '1': SUCCESS$ -^\[main.assertion.7\] line \d+ assertion b\[2\] == 'c': FAILURE$ -^\[main.assertion.8\] line \d+ assertion b\[3\] == '3': FAILURE$ -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- -^\[.+\.pointer_primitives\.\d+] line .*: FAILURE$ --- -Checks that entire arrays and fixed single elements are correctly havoced -when functions are replaced by contracts. diff --git a/regression/contracts/assigns_replace_07/main.c b/regression/contracts/assigns_replace_07/main.c deleted file mode 100644 index afa44dc1bf8..00000000000 --- a/regression/contracts/assigns_replace_07/main.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include - -struct test -{ - uint8_t buf[8]; -}; - -void f1(struct test *p) __CPROVER_assigns(p->buf) - __CPROVER_ensures((p == NULL) || p->buf[0] == 0) -{ - if(p != NULL) - p->buf[0] = 0; -} - -int main() -{ - struct test *p = malloc(sizeof(*p)); - uint8_t buf_1 = (p == NULL) ? 0 : p->buf[1]; - f1(p); - assert(p == NULL || p->buf[0] == 0); - assert(p == NULL || p->buf[1] == buf_1); -} diff --git a/regression/contracts/assigns_replace_07/test.desc b/regression/contracts/assigns_replace_07/test.desc deleted file mode 100644 index 1bf426348b8..00000000000 --- a/regression/contracts/assigns_replace_07/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 _ --malloc-may-fail --malloc-fail-null --pointer-check -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.\d+\] line \d+ assertion p == NULL \|\| p->buf\[0\] == 0: SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion p == NULL \|\| p->buf\[1\] == buf_1: FAILURE$ -^VERIFICATION FAILED$ --- --- -Checks whether CBMC properly evaluates write set of members from invalid objects. -Functions are not expected to write to invalid locations; CBMC flags such writes. -For contract checking, we ignore invalid targets in assigns clauses and assignment LHS. diff --git a/regression/contracts/assigns_replace_conditional_targets/main.c b/regression/contracts/assigns_replace_conditional_targets/main.c deleted file mode 100644 index 7226f2250f2..00000000000 --- a/regression/contracts/assigns_replace_conditional_targets/main.c +++ /dev/null @@ -1,74 +0,0 @@ -#include - -bool nz(int x) -{ - return x == 0; -} - -int foo(bool a, int *x, int *y, char *z) - // clang-format off -__CPROVER_requires(x && y && z) -__CPROVER_assigns( - a && nz(*x): *x; - !a && nz(*y): *y; - !nz(*x) && !nz(*y): __CPROVER_object_whole(z); -) -__CPROVER_ensures(true) -// clang-format on -{ - if(!nz(*x) && !nz(*y)) - __CPROVER_havoc_object(z); - - if(a && x) - { - if(nz(*x)) - *x = 0; - } - - if(~!a && y) - { - if(nz(*y)) - *y = 0; - } - - return 0; -} - -int main() -{ - bool a, old_a; - old_a = a; - - int x, old_x; - old_x = x; - - int y, old_y; - old_y = y; - - char *z = malloc(1); - *z = '0'; - - foo(a, &x, &y, z); - - // check frame conditions - // clang-format off - __CPROVER_assert(old_a == a, "a unchanged, expecting SUCCESS"); - - __CPROVER_assert( - old_a && nz(old_x) ==> x == old_x, "x changed, expecting FAILURE"); - __CPROVER_assert( - !(old_a && nz(old_x)) ==> x == old_x, "x unchanged, expecting SUCCESS"); - - __CPROVER_assert( - !old_a && nz(old_y) ==> y == old_y, "y changed, expecting FAILURE"); - __CPROVER_assert( - !(!old_a && nz(old_y)) ==> y == old_y, "y unchanged, expecting SUCCESS"); - - __CPROVER_assert( - !(nz(old_x) || nz(old_y)) ==> *z == '0', "z changed, expecting FAILURE"); - __CPROVER_assert( - nz(old_x) || nz(old_y) ==> *z == '0', "z unchanged, expecting SUCCESS"); - // clang-format on - - return 0; -} diff --git a/regression/contracts/assigns_replace_conditional_targets/test.desc b/regression/contracts/assigns_replace_conditional_targets/test.desc deleted file mode 100644 index bc973ad8152..00000000000 --- a/regression/contracts/assigns_replace_conditional_targets/test.desc +++ /dev/null @@ -1,19 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^main.c function main$ -^\[main\.assertion\.\d+\] line 55 a unchanged, expecting SUCCESS: SUCCESS$ -^\[main\.assertion\.\d+\] line 57 x changed, expecting FAILURE: FAILURE$ -^\[main\.assertion\.\d+\] line 59 x unchanged, expecting SUCCESS: SUCCESS$ -^\[main\.assertion\.\d+\] line 62 y changed, expecting FAILURE: FAILURE$ -^\[main\.assertion\.\d+\] line 64 y unchanged, expecting SUCCESS: SUCCESS$ -^\[main\.assertion\.\d+\] line 67 z changed, expecting FAILURE: FAILURE$ -^\[main\.assertion\.\d+\] line 69 z unchanged, expecting SUCCESS: SUCCESS$ -^VERIFICATION FAILED$ -^EXIT=10$ -^SIGNAL=0$ --- --- -Checks that havocking of conditional targets works as expected when -replacing a call by a contract. We manually express frame conditions as -assertions in the main function. diff --git a/regression/contracts/assigns_type_checking_invalid_case_01/main.c b/regression/contracts/assigns_type_checking_invalid_case_01/main.c deleted file mode 100644 index dcbb1dc2956..00000000000 --- a/regression/contracts/assigns_type_checking_invalid_case_01/main.c +++ /dev/null @@ -1,11 +0,0 @@ -void foo(int a) __CPROVER_assigns(0) -{ - a = 0; -} - -int main() -{ - int n; - foo(n); - return 0; -} diff --git a/regression/contracts/assigns_type_checking_invalid_case_01/test.desc b/regression/contracts/assigns_type_checking_invalid_case_01/test.desc deleted file mode 100644 index 95a72acfebc..00000000000 --- a/regression/contracts/assigns_type_checking_invalid_case_01/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^CONVERSION ERROR$ -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ --- -Checks whether type checking rejects literal constants in assigns clause. diff --git a/regression/contracts/assigns_type_checking_invalid_case_02/main.c b/regression/contracts/assigns_type_checking_invalid_case_02/main.c deleted file mode 100644 index 380604fd314..00000000000 --- a/regression/contracts/assigns_type_checking_invalid_case_02/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include - -void bar(char d[]) __CPROVER_assigns(d[7]) -{ -} - -int main() -{ - char b[10]; - b[0] = 'a'; - b[1] = 'b'; - b[2] = 'c'; - b[3] = 'd'; - b[4] = 'e'; - b[5] = 'f'; - b[6] = 'g'; - b[7] = 'h'; - b[8] = 'i'; - b[9] = 'j'; - bar(b); - assert(b[0] == 'a'); - assert(b[1] == 'b'); - assert(b[2] == 'c'); - assert(b[3] == 'd'); - assert(b[4] == 'e'); - assert(b[5] == 'f'); - assert(b[6] == 'g'); - assert(b[7] == 'h'); - assert(b[8] == 'i'); - assert(b[9] == 'j'); - - return 0; -} diff --git a/regression/contracts/assigns_type_checking_invalid_case_02/test.desc b/regression/contracts/assigns_type_checking_invalid_case_02/test.desc deleted file mode 100644 index ee9fa435234..00000000000 --- a/regression/contracts/assigns_type_checking_invalid_case_02/test.desc +++ /dev/null @@ -1,19 +0,0 @@ -CORE -main.c ---replace-call-with-contract bar -^EXIT=(10)$ -^SIGNAL=0$ -^\[main.assertion.\d+\] line \d+ assertion b\[0\] \=\= \'a\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[1\] \=\= \'b\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[2\] \=\= \'c\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[3\] \=\= \'d\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[4\] \=\= \'e\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[5\] \=\= \'f\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[6\] \=\= \'g\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[7\] \=\= \'h\': FAILURE$ -^\[main.assertion.\d+\] line \d+ assertion b\[8\] \=\= \'i\': SUCCESS$ -^\[main.assertion.\d+\] line \d+ assertion b\[9\] \=\= \'j\': SUCCESS$ -^VERIFICATION FAILED$ --- --- -Checks whether CBMC properly havocs a single instance of an array. diff --git a/regression/contracts/assigns_validity_pointer_01/main.c b/regression/contracts/assigns_validity_pointer_01/main.c deleted file mode 100644 index ab5750df7f7..00000000000 --- a/regression/contracts/assigns_validity_pointer_01/main.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - -int *z; - -void bar(int *x, int *y) __CPROVER_assigns(*x, *y) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3 && (y == NULL || *y == 5)) -{ - *x = 3; - if(y != NULL) - *y = 5; -} - -void baz() __CPROVER_assigns(*z) __CPROVER_ensures(z == NULL || *z == 7) -{ - if(z != NULL) - *z = 7; -} - -void foo(int *x) __CPROVER_assigns(*x, *z) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3) -{ - bar(x, NULL); - baz(); -} - -int main() -{ - int n; - z = malloc(sizeof(*z)); - foo(&n); - - assert(n == 3); - assert(z == NULL || *z == 7); - return 0; -} diff --git a/regression/contracts/assigns_validity_pointer_01/test.desc b/regression/contracts/assigns_validity_pointer_01/test.desc deleted file mode 100644 index acec0487658..00000000000 --- a/regression/contracts/assigns_validity_pointer_01/test.desc +++ /dev/null @@ -1,25 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo --replace-call-with-contract bar --replace-call-with-contract baz -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -SUCCESS -// bar -ASSERT \*foo::x > 0 -IF ¬\(\*foo::x = 3\) THEN GOTO \d -ASSIGN .*::tmp_if_expr := \(\*\(.*0.*\) = 5 \? true : false\) -ASSIGN .*::tmp_if_expr\$\d := .*::tmp_if_expr \? true : false -ASSUME .*::tmp_if_expr\$\d -// baz -IF ¬\(z ≠ NULL\) THEN GOTO \d -ASSIGN .*::tmp_if_expr\$\d := \(\*z = 7 \? true : false\) -ASSUME .*::tmp_if_expr\$\d --- -\[3\] file main\.c line 6 assertion: FAILURE --- -Verification: -This test checks support for a NULL pointer that is assigned to by -a function (bar and baz). Both functions bar and baz are being replaced by -their function contracts, while the calling function foo is being checked -(by enforcing it's function contracts). diff --git a/regression/contracts/assigns_validity_pointer_03/main.c b/regression/contracts/assigns_validity_pointer_03/main.c deleted file mode 100644 index a3e68c4f79e..00000000000 --- a/regression/contracts/assigns_validity_pointer_03/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include - -int *z; - -void bar(int *x, int *y) __CPROVER_assigns(*x, *y) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3 && *y == 5) -{ -} - -void baz() __CPROVER_assigns(*z) __CPROVER_ensures(*z == 7) -{ -} - -void foo(int *x) __CPROVER_assigns(*x) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3) -{ - int *y; - bar(x, y); - assert(*y == 5); - - baz(); - assert(*z == 7); -} - -int main() -{ - int n; - foo(&n); - - assert(n == 3); - return 0; -} diff --git a/regression/contracts/assigns_validity_pointer_03/test.desc b/regression/contracts/assigns_validity_pointer_03/test.desc deleted file mode 100644 index a444bb19dce..00000000000 --- a/regression/contracts/assigns_validity_pointer_03/test.desc +++ /dev/null @@ -1,28 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo --replace-call-with-contract bar --replace-call-with-contract baz -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -// bar -ASSERT \*x > 0 -IF !\(\*x == 3\) THEN GOTO \d -tmp_if_expr = \*y == 5 \? true : false; -ASSUME tmp_if_expr -// baz -ASSUME \*z == 7 -// foo -ASSUME \*tmp_cc\$\d > 0 -ASSERT \*tmp_cc\$\d == 3 --- --- -Verification: -This test checks support for an uninitialized pointer that is assigned to by -a function (bar and baz). Both functions bar and baz are being replaced by -their function contracts, while the calling function foo is being checked -(by enforcing it's function contracts). - -Known Bug: -Currently, there is a known issue with __CPROVER_w_ok(ptr, 0) such that it -returns true if ptr is uninitialized. This is not the expected behavior, -therefore, the outcome of this test case is currently incorrect. diff --git a/regression/contracts/assigns_validity_pointer_04/main.c b/regression/contracts/assigns_validity_pointer_04/main.c deleted file mode 100644 index 1042131e090..00000000000 --- a/regression/contracts/assigns_validity_pointer_04/main.c +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include - -int *z; - -void bar(int *x, int *y) __CPROVER_assigns(*x, *y) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3 && *y == 5) -{ -} - -void baz() __CPROVER_assigns(*z) __CPROVER_ensures(*z == 7) -{ -} - -void foo(int *x) __CPROVER_assigns(*x) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3) -{ - int *y = malloc(sizeof(int)); - bar(x, y); - assert(*y == 5); - - z = malloc(sizeof(int)); - baz(); - assert(*z == 7); -} - -int main() -{ - int n; - foo(&n); - - assert(n == 3); - return 0; -} diff --git a/regression/contracts/assigns_validity_pointer_04/test.desc b/regression/contracts/assigns_validity_pointer_04/test.desc deleted file mode 100644 index 1472601dc67..00000000000 --- a/regression/contracts/assigns_validity_pointer_04/test.desc +++ /dev/null @@ -1,21 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo --replace-call-with-contract bar --replace-call-with-contract baz _ --pointer-primitive-check -^EXIT=10$ -^SIGNAL=0$ -^\[foo.assigns.\d+\] line \d+ Check that z is assignable: FAILURE$ -^.* 1 of \d+ failed \(\d+ iteration.*\)$ -^VERIFICATION FAILED$ -// bar -ASSERT \*foo::x > 0 -IF ¬\(\*foo::x = 3\) THEN GOTO \d -ASSIGN goto_convertt::tmp_if_expr := \(\*foo::1::y = 5 \? true : false\) -ASSUME .*::tmp_if_expr -// baz -ASSUME \*z = 7 --- --- -This test checks support for a malloced pointer that is assigned to by -a function (bar and baz). Both functions bar and baz are being replaced by -their function contracts, while the calling function foo is being checked -(by enforcing it's function contracts). diff --git a/regression/contracts/embedded_contract_fail_01/main.c b/regression/contracts/embedded_contract_fail_01/main.c deleted file mode 100644 index 00b38ce7e21..00000000000 --- a/regression/contracts/embedded_contract_fail_01/main.c +++ /dev/null @@ -1,18 +0,0 @@ -typedef void (*fun_ptr_t)(int x); - -void bar(int x) -{ - return; -} - -void foo(void (*fun_ptr)(int x) __CPROVER_requires(x != 0)) -{ - return; -} - -void main() -{ - fun_ptr_t fun_ptr = bar; - foo(fun_ptr); - return; -} diff --git a/regression/contracts/embedded_contract_fail_01/test.desc b/regression/contracts/embedded_contract_fail_01/test.desc deleted file mode 100644 index 0feff02cf54..00000000000 --- a/regression/contracts/embedded_contract_fail_01/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c - -^.*: Function contracts allowed only at top-level declarations. .*$ -^PARSING ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks if function contracts can be attached to function pointers -(with non-empty parameter lists) in function parameters. This should -fail. Exit code 64 for Windows servers. diff --git a/regression/contracts/embedded_contract_fail_02/main.c b/regression/contracts/embedded_contract_fail_02/main.c deleted file mode 100644 index bdd0a1bd645..00000000000 --- a/regression/contracts/embedded_contract_fail_02/main.c +++ /dev/null @@ -1,18 +0,0 @@ -typedef int (*fun_ptr_t)(); - -int bar() -{ - return 1; -} - -void foo(int (*fun_ptr)() __CPROVER_ensures(__CPROVER_return_value == 1)) -{ - return; -} - -void main() -{ - fun_ptr_t fun_ptr = bar; - foo(fun_ptr); - return; -} diff --git a/regression/contracts/embedded_contract_fail_02/test.desc b/regression/contracts/embedded_contract_fail_02/test.desc deleted file mode 100644 index 440129b001a..00000000000 --- a/regression/contracts/embedded_contract_fail_02/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c - -^.*: Function contracts allowed only at top-level declarations. .*$ -^PARSING ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -Checks if function contracts can be attached to function pointers -(with empty parameter lists) in function parameters. This should -fail. Exit code 64 for Windows servers. diff --git a/regression/contracts/entry_point/main.c b/regression/contracts/entry_point/main.c deleted file mode 100644 index 151bc7306c2..00000000000 --- a/regression/contracts/entry_point/main.c +++ /dev/null @@ -1,9 +0,0 @@ -int foo(char *arr, unsigned int size) - // clang-format off -__CPROVER_requires(__CPROVER_is_fresh(arr, size)) -__CPROVER_assigns(arr &&size > 0: arr[0]) -// clang-format on -{ - if(arr && size > 0) - arr[0] = 1; -} diff --git a/regression/contracts/entry_point/test.desc b/regression/contracts/entry_point/test.desc deleted file mode 100644 index ee6f79d660d..00000000000 --- a/regression/contracts/entry_point/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo _ --function foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that we can use a function with a contract as entry point -for the analysis when its contract gets enforced. diff --git a/regression/contracts/frees-clause-and-predicates-fail/main.c b/regression/contracts/frees-clause-and-predicates-fail/main.c deleted file mode 100644 index b15195d2ec9..00000000000 --- a/regression/contracts/frees-clause-and-predicates-fail/main.c +++ /dev/null @@ -1,45 +0,0 @@ -#include - -// A function defining a conditionally freeable target -void foo_frees(char *arr, const size_t size, const size_t new_size) -{ - __CPROVER_freeable(arr); -} - -char *foo(char *arr, const size_t size, const size_t new_size) - // clang-format off - // error was_freed cannot be used in preconditions -__CPROVER_requires(!__CPROVER_was_freed(arr)) -__CPROVER_requires(__CPROVER_is_freeable(arr)) -__CPROVER_assigns(__CPROVER_object_whole(arr)) -__CPROVER_frees(foo_frees(arr, size, new_size)) -__CPROVER_ensures( - (arr && new_size > size) ==> - __CPROVER_is_fresh(__CPROVER_return_value, new_size)) -__CPROVER_ensures( - (arr && new_size > size) ==> - __CPROVER_was_freed(__CPROVER_old(arr))) -__CPROVER_ensures( - !(arr && new_size > size) ==> - __CPROVER_return_value == __CPROVER_old(arr)) -// clang-format on -{ - if(arr && new_size > size) - { - free(arr); - return malloc(new_size); - } - else - { - return arr; - } -} - -int main() -{ - size_t size; - size_t new_size; - char *arr = malloc(size); - arr = foo(arr, size, new_size); - return 0; -} diff --git a/regression/contracts/frees-clause-and-predicates-fail/test.desc b/regression/contracts/frees-clause-and-predicates-fail/test.desc deleted file mode 100644 index a6edf9e399c..00000000000 --- a/regression/contracts/frees-clause-and-predicates-fail/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.* error: __CPROVER_was_freed is not allowed in preconditions.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that the front end rejects __CPROVER_was_freed in preconditions. diff --git a/regression/contracts/frees-clause-and-predicates-fail2/main.c b/regression/contracts/frees-clause-and-predicates-fail2/main.c deleted file mode 100644 index b10cb56d486..00000000000 --- a/regression/contracts/frees-clause-and-predicates-fail2/main.c +++ /dev/null @@ -1,44 +0,0 @@ -#include - -// A function defining a conditionally freeable target -int foo_frees(char *arr, const size_t size, const size_t new_size) -{ - __CPROVER_freeable(arr); - return 0; -} - -char *foo(char *arr, const size_t size, const size_t new_size) - // clang-format off -__CPROVER_requires(__CPROVER_is_freeable(arr)) -__CPROVER_assigns(__CPROVER_object_whole(arr)) -__CPROVER_frees(foo_frees(arr, size, new_size)) -__CPROVER_ensures( - (arr && new_size > size) ==> - __CPROVER_is_fresh(__CPROVER_return_value, new_size)) -__CPROVER_ensures( - (arr && new_size > size) ==> - __CPROVER_was_freed(__CPROVER_old(arr))) -__CPROVER_ensures( - !(arr && new_size > size) ==> - __CPROVER_return_value == __CPROVER_old(arr)) -// clang-format on -{ - if(arr && new_size > size) - { - free(arr); - return malloc(new_size); - } - else - { - return arr; - } -} - -int main() -{ - size_t size; - size_t new_size; - char *arr = malloc(size); - arr = foo(arr, size, new_size); - return 0; -} diff --git a/regression/contracts/frees-clause-and-predicates-fail2/test.desc b/regression/contracts/frees-clause-and-predicates-fail2/test.desc deleted file mode 100644 index b1484cf2b62..00000000000 --- a/regression/contracts/frees-clause-and-predicates-fail2/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.* error: expecting void return type for function 'foo_frees' called in frees clause$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that the front-end rejects non-void-typed -function calls in frees clauses. diff --git a/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/main.c b/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/main.c deleted file mode 100644 index 10d45ca3c87..00000000000 --- a/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/main.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -void foo(char *arr) __CPROVER_requires(__CPROVER_is_freeable(arr, 1)) -{ -} - -int main() -{ - size_t size; - char arr[size]; - foo(arr); - return 0; -} diff --git a/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/test.desc b/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/test.desc deleted file mode 100644 index cfea1068a38..00000000000 --- a/regression/contracts/frees-clause-and-predicates-is_freeable-bad-arity/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: wrong number of function arguments: expected 1, but got 2$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks bad uses of __CPROVER_is_freeable are rejected. diff --git a/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/main.c b/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/main.c deleted file mode 100644 index 51209b124a2..00000000000 --- a/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -void foo(char *arr) __CPROVER_requires(__CPROVER_is_freeable(arr)) - __CPROVER_ensures(__CPROVER_was_freed(__CPROVER_old(arr), 1)) -{ - free(arr); -} - -int main() -{ - size_t size; - char arr[size]; - foo(arr); - return 0; -} diff --git a/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/test.desc b/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/test.desc deleted file mode 100644 index 845d8bdde01..00000000000 --- a/regression/contracts/frees-clause-and-predicates-is_freed-bad-arity/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: wrong number of function arguments: expected 1, but got 2$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks bad uses of __CPROVER_was_freed are rejected. diff --git a/regression/contracts/function_apply_01/main.c b/regression/contracts/function_apply_01/main.c deleted file mode 100644 index f12e9a8033b..00000000000 --- a/regression/contracts/function_apply_01/main.c +++ /dev/null @@ -1,19 +0,0 @@ -// function_apply_01 - -// Note that this test is supposed to have an incorrect contract. -// We verify that applying (without checking) the contract yields success, -// and that checking the contract yields failure. - -#include - -int foo() __CPROVER_ensures(__CPROVER_return_value == 0) -{ - return 1; -} - -int main() -{ - int x = foo(); - assert(x == 0); - return 0; -} diff --git a/regression/contracts/function_apply_01/test.desc b/regression/contracts/function_apply_01/test.desc deleted file mode 100644 index 0e9f03d3a93..00000000000 --- a/regression/contracts/function_apply_01/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This code is purposely unsound (the function does not abide by its -contract). Verifying the function in isolation should fail, and -verifying its caller should succeed. diff --git a/regression/contracts/function_check_02/main.c b/regression/contracts/function_check_02/main.c deleted file mode 100644 index d065822bece..00000000000 --- a/regression/contracts/function_check_02/main.c +++ /dev/null @@ -1,36 +0,0 @@ -// function_check_02 - -// This test checks the use of quantifiers in ensures clauses. -// A known bug (resolved in PR #2278) causes the use of quantifiers -// in ensures to fail. - -// clang-format off -int initialize(int *arr) - __CPROVER_assigns(__CPROVER_object_whole(arr)) - __CPROVER_ensures( - __CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == i - } - ) -// clang-format on -{ - arr[0] = 0; - arr[1] = 1; - arr[2] = 2; - arr[3] = 3; - arr[4] = 4; - arr[5] = 5; - arr[6] = 6; - arr[7] = 7; - arr[8] = 8; - arr[9] = 9; - - return 0; -} - -int main() -{ - int arr[10]; - initialize(arr); -} diff --git a/regression/contracts/function_check_02/test.desc b/regression/contracts/function_check_02/test.desc deleted file mode 100644 index aed1f670bbe..00000000000 --- a/regression/contracts/function_check_02/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract initialize -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Ensures statements currently do not allow quantified predicates unless the -function has void return type. diff --git a/regression/contracts/function_loop_history_ensures_fail/main.c b/regression/contracts/function_loop_history_ensures_fail/main.c deleted file mode 100644 index 8ff92262bf0..00000000000 --- a/regression/contracts/function_loop_history_ensures_fail/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(*x == __CPROVER_loop_entry(*x) + 5) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/function_loop_history_ensures_fail/test.desc b/regression/contracts/function_loop_history_ensures_fail/test.desc deleted file mode 100644 index dfae3755b11..00000000000 --- a/regression/contracts/function_loop_history_ensures_fail/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.* error: __CPROVER_loop_entry is not allowed in postconditions.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test ensures that __CPROVER_loop_entry cannot be used within ensures clause. diff --git a/regression/contracts/function_loop_history_requires_fail/main.c b/regression/contracts/function_loop_history_requires_fail/main.c deleted file mode 100644 index f0f4aeeba22..00000000000 --- a/regression/contracts/function_loop_history_requires_fail/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void bar(int *x) __CPROVER_assigns(*x) - __CPROVER_requires(*x == __CPROVER_loop_entry(*x) + 5) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/function_loop_history_requires_fail/test.desc b/regression/contracts/function_loop_history_requires_fail/test.desc deleted file mode 100644 index 09fbb1eddb3..00000000000 --- a/regression/contracts/function_loop_history_requires_fail/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract bar -^main.c.* error: __CPROVER_loop_entry is not allowed in preconditions.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test ensures that __CPROVER_loop_entry cannot be used within requires clause. diff --git a/regression/contracts/function_no_apply_01/main.c b/regression/contracts/function_no_apply_01/main.c deleted file mode 100644 index f12e9a8033b..00000000000 --- a/regression/contracts/function_no_apply_01/main.c +++ /dev/null @@ -1,19 +0,0 @@ -// function_apply_01 - -// Note that this test is supposed to have an incorrect contract. -// We verify that applying (without checking) the contract yields success, -// and that checking the contract yields failure. - -#include - -int foo() __CPROVER_ensures(__CPROVER_return_value == 0) -{ - return 1; -} - -int main() -{ - int x = foo(); - assert(x == 0); - return 0; -} diff --git a/regression/contracts/function_no_apply_01/test.desc b/regression/contracts/function_no_apply_01/test.desc deleted file mode 100644 index 8b7727f80aa..00000000000 --- a/regression/contracts/function_no_apply_01/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c - -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.1\] line 17 assertion x == 0: FAILURE$ -^VERIFICATION FAILED$ --- -^warning: ignoring --- -We don't actually replace the function call with its contract here, so -CBMC should notice that the program is unsound. diff --git a/regression/contracts/havoc-static/main.c b/regression/contracts/havoc-static/main.c deleted file mode 100644 index eb7cc42c847..00000000000 --- a/regression/contracts/havoc-static/main.c +++ /dev/null @@ -1,20 +0,0 @@ -int a = 0; // should be havoced -const int b = 0; // should not be havoced (const) -int c = 0; // should be havoced - -void foo() __CPROVER_requires(1) __CPROVER_ensures(1) __CPROVER_assigns() -{ - if(a) - __CPROVER_assert(0, "guarded by a"); - - if(b) - __CPROVER_assert(0, "guarded by b"); - - if(c) - __CPROVER_assert(0, "guarded by c"); -} - -void main() -{ - foo(); -} diff --git a/regression/contracts/havoc-static/test-exclude.desc b/regression/contracts/havoc-static/test-exclude.desc deleted file mode 100644 index 534a17f1c9c..00000000000 --- a/regression/contracts/havoc-static/test-exclude.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo --nondet-static-exclude main.c:a --nondet-static-exclude main.c:c -^\[foo.assertion.\d+\].* guarded by a: SUCCESS$ -^\[foo.assertion.\d+\].* guarded by b: SUCCESS$ -^\[foo.assertion.\d+\].* guarded by c: SUCCESS$ -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks that we can exclude some statics from havocing. diff --git a/regression/contracts/havoc-static/test.desc b/regression/contracts/havoc-static/test.desc deleted file mode 100644 index 74fe57b07c8..00000000000 --- a/regression/contracts/havoc-static/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^\[foo.assertion.\d+\].* guarded by a: FAILURE$ -^\[foo.assertion.\d+\].* guarded by b: SUCCESS$ -^\[foo.assertion.\d+\].* guarded by c: FAILURE$ -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- --- -Checks that statics are havoced when using contracts, -unless they are marked const. diff --git a/regression/contracts/history-constant/main.c b/regression/contracts/history-constant/main.c deleted file mode 100644 index 3806fc67c58..00000000000 --- a/regression/contracts/history-constant/main.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -int foo(int l) __CPROVER_requires(-10 <= l && l <= 10) __CPROVER_ensures( - __CPROVER_return_value == __CPROVER_old(l) + __CPROVER_old(10)) -{ - return l + 10; -} - -int main() -{ - int l; - __CPROVER_assume(-10 <= l && l <= 10); - foo(l); - return 0; -} diff --git a/regression/contracts/history-constant/test.desc b/regression/contracts/history-constant/test.desc deleted file mode 100644 index bedf99c897e..00000000000 --- a/regression/contracts/history-constant/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^Tracking history of constant expressions is not supported yet --- -This test checks that history variables are supported for constant expressions. diff --git a/regression/contracts/history-pointer-both-01/main.c b/regression/contracts/history-pointer-both-01/main.c deleted file mode 100644 index e562ea1af5e..00000000000 --- a/regression/contracts/history-pointer-both-01/main.c +++ /dev/null @@ -1,20 +0,0 @@ -#include - -void bar(int *l) __CPROVER_assigns(*l) __CPROVER_requires(l != NULL) - __CPROVER_ensures(__CPROVER_old(*l) == *l) -{ -} - -void foo(int *n) __CPROVER_assigns(*n) __CPROVER_requires(n != NULL) - __CPROVER_ensures(__CPROVER_old(*n) == *n) -{ - bar(n); -} - -int main() -{ - int m; - foo(&m); - - return 0; -} diff --git a/regression/contracts/history-pointer-both-01/test.desc b/regression/contracts/history-pointer-both-01/test.desc deleted file mode 100644 index 3854c9f2423..00000000000 --- a/regression/contracts/history-pointer-both-01/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo --replace-call-with-contract bar -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that history variables are supported for parameters of the -the function under test. By using the --enforce-contract flag, -the post-condition (which contains the history variable) is asserted. -In this case, this assertion should pass. diff --git a/regression/contracts/history-pointer-enforce-01/main.c b/regression/contracts/history-pointer-enforce-01/main.c deleted file mode 100644 index 07cba9ccd7a..00000000000 --- a/regression/contracts/history-pointer-enforce-01/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(*x == __CPROVER_old(*x) + 5) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-01/test.desc b/regression/contracts/history-pointer-enforce-01/test.desc deleted file mode 100644 index 20e1d6cbc0e..00000000000 --- a/regression/contracts/history-pointer-enforce-01/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Verification: -This test checks that history variables are supported for parameters of the -the function under test. By using the --enforce-contract flag, -the post-condition (which contains the history variable) is asserted. -In this case, this assertion should pass. diff --git a/regression/contracts/history-pointer-enforce-02/main.c b/regression/contracts/history-pointer-enforce-02/main.c deleted file mode 100644 index 36f2ce3c80c..00000000000 --- a/regression/contracts/history-pointer-enforce-02/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(*x < __CPROVER_old(*x) + 5) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-02/test.desc b/regression/contracts/history-pointer-enforce-02/test.desc deleted file mode 100644 index afac5844304..00000000000 --- a/regression/contracts/history-pointer-enforce-02/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ --- --- -Verification: -This test checks that history variables are supported for parameters of the -the function under test. By using the --enforce-contract flag, -the post-condition (which contains the history variable) is asserted. -In this case, this assertion should fail. diff --git a/regression/contracts/history-pointer-enforce-03/main.c b/regression/contracts/history-pointer-enforce-03/main.c deleted file mode 100644 index 69eb8f972cc..00000000000 --- a/regression/contracts/history-pointer-enforce-03/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_requires(*x > 0 && *x < INT_MAX - 5) __CPROVER_ensures( - *x >= __CPROVER_old(*x) + 4 && *x <= __CPROVER_old(*x) + 6) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-03/test.desc b/regression/contracts/history-pointer-enforce-03/test.desc deleted file mode 100644 index 94b2e2850d5..00000000000 --- a/regression/contracts/history-pointer-enforce-03/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -ASSERT .*::tmp_if_expr\$\d --- --- -Verification: -This test checks that history variables are supported in the case where a -history variable is referred to multiple times within an ensures clause. -By using the --enforce-contract flag, the post-condition (which contains -the history variable) is asserted. In this case, this assertion should pass. diff --git a/regression/contracts/history-pointer-enforce-04/main.c b/regression/contracts/history-pointer-enforce-04/main.c deleted file mode 100644 index 87da56243ee..00000000000 --- a/regression/contracts/history-pointer-enforce-04/main.c +++ /dev/null @@ -1,15 +0,0 @@ -void foo(int *x, int *y) __CPROVER_assigns(*x, *y) - __CPROVER_ensures(*x == __CPROVER_old(*y) + 1 && *y == __CPROVER_old(*x) + 2) -{ - int x_initial = *x; - *x = *y + 1; - *y = x_initial + 2; -} - -int main() -{ - int x, y; - foo(&x, &y); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-04/test.desc b/regression/contracts/history-pointer-enforce-04/test.desc deleted file mode 100644 index e9770d0a04f..00000000000 --- a/regression/contracts/history-pointer-enforce-04/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -ASSERT .*::tmp_if_expr --- --- -Verification: -This test checks that history variables are supported in the case where the -function under test has multiple parameters. By using the ---enforce-contract flag, the post-condition (which contains the history -variables) is asserted. In this case, this assertion should pass. diff --git a/regression/contracts/history-pointer-enforce-05/main.c b/regression/contracts/history-pointer-enforce-05/main.c deleted file mode 100644 index 33783befa60..00000000000 --- a/regression/contracts/history-pointer-enforce-05/main.c +++ /dev/null @@ -1,14 +0,0 @@ -void foo(int *x, int *y) __CPROVER_assigns(*x, *y) - __CPROVER_ensures(*x == __CPROVER_old(*x) + 2 || *y == __CPROVER_old(*y) + 3) -{ - *x = *x + 1; - *y = *y + 2; -} - -int main() -{ - int x, y; - foo(&x, &y); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-05/test.desc b/regression/contracts/history-pointer-enforce-05/test.desc deleted file mode 100644 index df4aebc14df..00000000000 --- a/regression/contracts/history-pointer-enforce-05/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ -ASSERT .*::tmp_if_expr --- --- -Verification: -This test checks that history variables are supported in the case where the -function under test has multiple parameters. By using the ---enforce-contract flag, the post-condition (which contains the history -variables) is asserted. In this case, this assertion should fail. diff --git a/regression/contracts/history-pointer-enforce-06/main.c b/regression/contracts/history-pointer-enforce-06/main.c deleted file mode 100644 index b8c7bef2b03..00000000000 --- a/regression/contracts/history-pointer-enforce-06/main.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(*x == __CPROVER_old(*x) + 5) -{ - assert(__CPROVER_old(*x) == *x); - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-06/test.desc b/regression/contracts/history-pointer-enforce-06/test.desc deleted file mode 100644 index 0e2074c5166..00000000000 --- a/regression/contracts/history-pointer-enforce-06/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^VERIFICATION FAILED$ -warning: ignoring old --- --- -Verification: -This test checks that history variables are not supported when referred to from -a function body. In such a case, verification should fail. diff --git a/regression/contracts/history-pointer-enforce-07/main.c b/regression/contracts/history-pointer-enforce-07/main.c deleted file mode 100644 index 13c04214e73..00000000000 --- a/regression/contracts/history-pointer-enforce-07/main.c +++ /dev/null @@ -1,13 +0,0 @@ -void foo(int *x) __CPROVER_assigns(*x) - __CPROVER_ensures(*x == __CPROVER_old(*y) + 5) -{ - *x = *x + 5; -} - -int main() -{ - int n; - foo(&n); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-07/test.desc b/regression/contracts/history-pointer-enforce-07/test.desc deleted file mode 100644 index caf57010dd1..00000000000 --- a/regression/contracts/history-pointer-enforce-07/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=(1|64)$ -^SIGNAL=0$ -^CONVERSION ERROR$ -error: failed to find symbol 'y' --- --- -Verification: -This test checks that history variables may only be used with existing -symbols. In other words, including a new symbol as part of __CPROVER_old() -is not alowed. In such a case, the program should not parse and there -should be a conversion error. diff --git a/regression/contracts/history-pointer-enforce-08/main.c b/regression/contracts/history-pointer-enforce-08/main.c deleted file mode 100644 index 49e3e74ce70..00000000000 --- a/regression/contracts/history-pointer-enforce-08/main.c +++ /dev/null @@ -1,24 +0,0 @@ -#include - -struct pair -{ - int *x; - int *y; -}; - -void foo(struct pair p) __CPROVER_assigns(*(p.y)) - __CPROVER_ensures(*(p.y) == __CPROVER_old(*(p.y)) + 5) -{ - *(p.y) = *(p.y) + 5; -} - -int main() -{ - struct pair p; - p.x = malloc(sizeof(int)); - p.y = malloc(sizeof(int)); - - foo(p); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-08/test.desc b/regression/contracts/history-pointer-enforce-08/test.desc deleted file mode 100644 index 67c9760b3fc..00000000000 --- a/regression/contracts/history-pointer-enforce-08/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Verification: -This test checks that history variables are supported for dereferences over -pointers to struct members. By using the --enforce-contract flag, the -post-condition (which contains the history variable) is asserted. In this -case, this assertion should pass. diff --git a/regression/contracts/history-pointer-enforce-11/main.c b/regression/contracts/history-pointer-enforce-11/main.c deleted file mode 100644 index eef1467ed41..00000000000 --- a/regression/contracts/history-pointer-enforce-11/main.c +++ /dev/null @@ -1,23 +0,0 @@ -#include - -struct pair -{ - int x; - int y; -}; - -void foo(struct pair *p) __CPROVER_assigns(p->y) - __CPROVER_ensures((p != NULL) == > (p->y == __CPROVER_old(p->y) + 5)) - __CPROVER_ensures((p == NULL) == > (p->y == __CPROVER_old(p->y))) -{ - if(p != NULL) - p->y = p->y + 5; -} - -int main() -{ - struct pair *p = NULL; - foo(p); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-11/test.desc b/regression/contracts/history-pointer-enforce-11/test.desc deleted file mode 100644 index ef9158f9adf..00000000000 --- a/regression/contracts/history-pointer-enforce-11/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -KNOWNBUG -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^\[postcondition.\d+\] Check ensures clause: SUCCESS$ -^\[foo.\d+\] line \d+ Check that p->y is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that history variables handle NULL pointers. -History variables currently do not check for nullness while -storing values of objects, which may lead to NULL pointer dereferences. diff --git a/regression/contracts/history-typecast/main.c b/regression/contracts/history-typecast/main.c deleted file mode 100644 index db496514605..00000000000 --- a/regression/contracts/history-typecast/main.c +++ /dev/null @@ -1,23 +0,0 @@ -#include - -long bar(long l, long r) __CPROVER_requires(-10 <= l && l <= 10) - __CPROVER_requires(-10 <= r && r <= 10) __CPROVER_ensures( - __CPROVER_return_value == __CPROVER_old(l) + __CPROVER_old(r)) -{ - return l + r; -} - -int foo(int l, int r) __CPROVER_requires(-10 <= l && l <= 10) - __CPROVER_requires(-10 <= r && r <= 10) __CPROVER_ensures( - __CPROVER_return_value == __CPROVER_old(l) + __CPROVER_old(r)) -{ - return bar((long)l, (long)r); -} - -int main() -{ - int n; - __CPROVER_assume(-10 <= n && n <= 10); - foo(n, n); - return 0; -} diff --git a/regression/contracts/history-typecast/test.desc b/regression/contracts/history-typecast/test.desc deleted file mode 100644 index cb588223265..00000000000 --- a/regression/contracts/history-typecast/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main.c ---replace-call-with-contract bar --enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^Tracking history of typecast expressions is not supported yet --- -This test checks that history variables are supported for typecast expressions. diff --git a/regression/contracts/ignored_return_value/main.c b/regression/contracts/ignored_return_value/main.c deleted file mode 100644 index 4dc6c0631c0..00000000000 --- a/regression/contracts/ignored_return_value/main.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -int get_at_idx(int const *const arr, const size_t len, const size_t idx) - __CPROVER_requires(__CPROVER_r_ok(arr, len) && idx < len) - __CPROVER_ensures(__CPROVER_return_value == arr[idx]) -{ - return arr[idx]; -} - -void main() -{ - int a[5] = {0}; - get_at_idx(a, 5, 3); -} diff --git a/regression/contracts/ignored_return_value/test.desc b/regression/contracts/ignored_return_value/test.desc deleted file mode 100644 index 3d64cf645d6..00000000000 --- a/regression/contracts/ignored_return_value/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---replace-call-with-contract get_at_idx -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test exposes a bug where CBMC would crash on a program where a function -with a return value has a postcondition that mentions __CPROVER_return_value, -but the caller does not assign the return value to anything. diff --git a/regression/contracts/named-contracts/main-contract-after-declaration.c b/regression/contracts/named-contracts/main-contract-after-declaration.c deleted file mode 100644 index af7174a40e6..00000000000 --- a/regression/contracts/named-contracts/main-contract-after-declaration.c +++ /dev/null @@ -1,28 +0,0 @@ -int foo(int *arr, int size); - -int foo(int *arr, int size) - // clang-format off -__CPROVER_requires(size > 0 && __CPROVER_is_fresh(arr, size)) -__CPROVER_assigns( - arr[0], arr[size-1]; - size >= 10: arr[5]; -) -__CPROVER_ensures(arr[0] == 0 && arr[size-1] == 0) -__CPROVER_ensures(size >= 10 ==> arr[5] == __CPROVER_return_value) - // clang-format on - ; - -int foo(int *arr, int size) -{ - arr[0] = 0; - arr[size - 1] = 0; - return size < 10 ? 0 : arr[5]; -} - -int main() -{ - int arr[10]; - int retval = foo(arr, 10); - __CPROVER_assert(retval == arr[5], "should succeed"); - return 0; -} diff --git a/regression/contracts/named-contracts/main-contract-after-definition.c b/regression/contracts/named-contracts/main-contract-after-definition.c deleted file mode 100644 index 639f4a95678..00000000000 --- a/regression/contracts/named-contracts/main-contract-after-definition.c +++ /dev/null @@ -1,26 +0,0 @@ -int foo(int *arr, int size) -{ - arr[0] = 0; - arr[size - 1] = 0; - return size < 10 ? 0 : arr[5]; -} - -int foo(int *arr, int size) - // clang-format off -__CPROVER_requires(size > 0 && __CPROVER_is_fresh(arr, size)) -__CPROVER_assigns( - arr[0], arr[size-1]; - size >= 10: arr[5]; -) -__CPROVER_ensures(arr[0] == 0 && arr[size-1] == 0) -__CPROVER_ensures(size >= 10 ==> arr[5] == __CPROVER_return_value) - // clang-format on - ; - -int main() -{ - int arr[10]; - int retval = foo(arr, 10); - __CPROVER_assert(retval == arr[5], "should succeed"); - return 0; -} diff --git a/regression/contracts/named-contracts/main-contract-incomplete.c b/regression/contracts/named-contracts/main-contract-incomplete.c deleted file mode 100644 index e91bdbf340e..00000000000 --- a/regression/contracts/named-contracts/main-contract-incomplete.c +++ /dev/null @@ -1,22 +0,0 @@ -int foo(int *arr, int size); - -int foo() - // clang-format off -__CPROVER_ensures(__CPROVER_return_value != 0) - // clang-format on - ; - -int foo(int *arr, int size) -{ - arr[0] = 0; - arr[size - 1] = 0; - return size < 10 ? 0 : arr[5]; -} - -int main() -{ - int arr[10]; - int retval = foo(arr, 10); - __CPROVER_assert(retval == arr[5], "should succeed"); - return 0; -} diff --git a/regression/contracts/named-contracts/main-contract-signature-conflict.c b/regression/contracts/named-contracts/main-contract-signature-conflict.c deleted file mode 100644 index b0d1fe6838a..00000000000 --- a/regression/contracts/named-contracts/main-contract-signature-conflict.c +++ /dev/null @@ -1,30 +0,0 @@ -int foo(int *arr, int size); - -#if 0 -int foo() - // clang-format off -__CPROVER_ensures(__CPROVER_return_value != 0) - // clang-format on - ; -#endif - -void foo(int *arr, int size) - // clang-format off -__CPROVER_requires(size > 0) - // clang-format on - ; - -int foo(int *arr, int size) -{ - arr[0] = 0; - arr[size - 1] = 0; - return size < 10 ? 0 : arr[5]; -} - -int main() -{ - int arr[10]; - int retval = foo(arr, 10); - __CPROVER_assert(retval == arr[5], "should succeed"); - return 0; -} diff --git a/regression/contracts/named-contracts/main-definition-after-contract.c b/regression/contracts/named-contracts/main-definition-after-contract.c deleted file mode 100644 index b8c458cb05e..00000000000 --- a/regression/contracts/named-contracts/main-definition-after-contract.c +++ /dev/null @@ -1,26 +0,0 @@ -int foo(int *arr, int size) - // clang-format off -__CPROVER_requires(size > 0 && __CPROVER_is_fresh(arr, size)) -__CPROVER_assigns( - arr[0], arr[size-1]; - size >= 10: arr[5]; -) -__CPROVER_ensures(arr[0] == 0 && arr[size-1] == 0) -__CPROVER_ensures(size >= 10 ==> arr[5] == __CPROVER_return_value) - // clang-format on - ; - -int foo(int *arr, int size) -{ - arr[0] = 0; - arr[size - 1] = 0; - return size < 10 ? 0 : arr[5]; -} - -int main() -{ - int arr[10]; - int retval = foo(arr, 10); - __CPROVER_assert(retval == arr[5], "should succeed"); - return 0; -} diff --git a/regression/contracts/named-contracts/main-no-definition.c b/regression/contracts/named-contracts/main-no-definition.c deleted file mode 100644 index c28e2f188c5..00000000000 --- a/regression/contracts/named-contracts/main-no-definition.c +++ /dev/null @@ -1,28 +0,0 @@ -int foo(int *arr, int size) - // clang-format off -__CPROVER_requires(size > 0 && __CPROVER_is_fresh(arr, size)) -__CPROVER_assigns( - arr[0], arr[size-1]; - size >= 10: arr[5]; -) -__CPROVER_ensures(arr[0] == 0 && arr[size-1] == 0) -__CPROVER_ensures(size >= 10 ==> arr[5] == __CPROVER_return_value) - // clang-format on - ; - -int main() -{ - int arr[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; - int retval = foo(arr, 10); - assert(arr[0] == 0); - assert(arr[1] == 9); - assert(arr[2] == 8); - assert(arr[3] == 7); - assert(arr[4] == 6); - assert(arr[5] == retval); - assert(arr[6] == 4); - assert(arr[7] == 3); - assert(arr[8] == 2); - assert(arr[9] == 0); - return 0; -} diff --git a/regression/contracts/named-contracts/test-contract-after-declaration.desc b/regression/contracts/named-contracts/test-contract-after-declaration.desc deleted file mode 100644 index 3533275f3f4..00000000000 --- a/regression/contracts/named-contracts/test-contract-after-declaration.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main-contract-after-declaration.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that we can have a function declaration with a contract after -having seen an earlier declaration of that same function. diff --git a/regression/contracts/named-contracts/test-contract-after-definition.desc b/regression/contracts/named-contracts/test-contract-after-definition.desc deleted file mode 100644 index bbfeda27862..00000000000 --- a/regression/contracts/named-contracts/test-contract-after-definition.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main-contract-after-definition.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that we can have a function declaration with a contract after -having seen that function's definition. diff --git a/regression/contracts/named-contracts/test-contract-incomplete.desc b/regression/contracts/named-contracts/test-contract-incomplete.desc deleted file mode 100644 index 95fd11fea25..00000000000 --- a/regression/contracts/named-contracts/test-contract-incomplete.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main-contract-incomplete.c - -error: code contract on incomplete function re-declaration -CONVERSION ERROR -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that contracts on incomplete re-declarations are rejected. diff --git a/regression/contracts/named-contracts/test-contract-signature-conflict.desc b/regression/contracts/named-contracts/test-contract-signature-conflict.desc deleted file mode 100644 index 696e50287c7..00000000000 --- a/regression/contracts/named-contracts/test-contract-signature-conflict.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main-contract-signature-conflict.c ---enforce-contract foo -function symbol 'foo' redefined with a different type -^EXIT=(64|1)$ -^SIGNAL=0$ --- --- -This test checks that contracts on function declarations with a matching name -but different type are rejected. diff --git a/regression/contracts/named-contracts/test-definition-after-contract.desc b/regression/contracts/named-contracts/test-definition-after-contract.desc deleted file mode 100644 index c4122381f08..00000000000 --- a/regression/contracts/named-contracts/test-definition-after-contract.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main-definition-after-contract.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that we can have a function declaration with a contract and -without body, then the function definition, and successfully replace a call to -the function by the contract. diff --git a/regression/contracts/named-contracts/test-no-definition.desc b/regression/contracts/named-contracts/test-no-definition.desc deleted file mode 100644 index b7c21d92b16..00000000000 --- a/regression/contracts/named-contracts/test-no-definition.desc +++ /dev/null @@ -1,10 +0,0 @@ -CORE -main-no-definition.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that we can have a function declaration with a contract and -without body and replace a call to the function by the contract. diff --git a/regression/contracts/quantifiers-exists-ensures-replace/main.c b/regression/contracts/quantifiers-exists-ensures-replace/main.c deleted file mode 100644 index caacb3e5ccb..00000000000 --- a/regression/contracts/quantifiers-exists-ensures-replace/main.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include - -#define MAX_LEN 128 - -// clang-format off -int f1(int *arr, int len) - __CPROVER_ensures( - len > 0 ==> __CPROVER_exists { - int i; - // test replacement with symbolic bound - (0 <= i && i < len) && arr[i] == 0 - } - ) -// clang-format on -{ - // we are only checking for contract replacement - return 0; -} - -int main() -{ - int len; - __CPROVER_assume(0 <= len && len <= MAX_LEN); - - int *arr = malloc(len * sizeof(int)); - - f1(arr, len); - - bool found_zero = false; - for(int i = 0; i <= MAX_LEN; i++) - { - if(i < len) - found_zero |= (arr[i] == 0); - } - - // clang-format off - assert(len > 0 ==> found_zero); - // clang-format on -} diff --git a/regression/contracts/quantifiers-exists-ensures-replace/test.desc b/regression/contracts/quantifiers-exists-ensures-replace/test.desc deleted file mode 100644 index f0590e0a1a1..00000000000 --- a/regression/contracts/quantifiers-exists-ensures-replace/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[main.assertion.1\] line .* assertion len > 0 ==> found_zero: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_exists -within negative contexts (replaced ENSURES clauses). - -This is fully supported (without requiring full unrolling) with the SAT backend. diff --git a/regression/contracts/quantifiers-forall-ensures-replace/main.c b/regression/contracts/quantifiers-forall-ensures-replace/main.c deleted file mode 100644 index 8a9da439097..00000000000 --- a/regression/contracts/quantifiers-forall-ensures-replace/main.c +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include - -// clang-format off -int f1(int *arr) - __CPROVER_ensures(__CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == i - }) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10]; - - f1(arr); - - bool check = true; - for(int i = 0; i < 10; i++) - { - if(i == 0) - check &= (arr[i] = -1); - else - check &= (arr[i] = i); - } - assert(check); -} diff --git a/regression/contracts/quantifiers-forall-ensures-replace/test.desc b/regression/contracts/quantifiers-forall-ensures-replace/test.desc deleted file mode 100644 index 0782eaa00de..00000000000 --- a/regression/contracts/quantifiers-forall-ensures-replace/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.1\] line .* assertion check: FAILURE$ -^VERIFICATION FAILED$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_forall -within negative contexts (replaced ENSURES clauses). - -With the SAT backend universal quantifiers within a negative context, -e.g., the ENSURES clause being replaced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-nested-01/main.c b/regression/contracts/quantifiers-nested-01/main.c deleted file mode 100644 index cf274a29202..00000000000 --- a/regression/contracts/quantifiers-nested-01/main.c +++ /dev/null @@ -1,32 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_assigns(__CPROVER_object_whole(arr)) - __CPROVER_ensures(__CPROVER_forall { - int i; - __CPROVER_forall - { - int j; - (0 <= i && i < 10 && i <= j && j < 10) ==> arr[i] <= arr[j] - } - }) -// clang-format on -{ - arr[0] = 0; - arr[1] = 1; - arr[2] = 2; - arr[3] = 3; - arr[4] = 4; - arr[5] = 5; - arr[6] = 6; - arr[7] = 7; - arr[8] = 8; - arr[9] = 9; - - return 0; -} - -int main() -{ - int arr[10]; - f1(arr); -} diff --git a/regression/contracts/quantifiers-nested-01/test.desc b/regression/contracts/quantifiers-nested-01/test.desc deleted file mode 100644 index 6a1c043f22a..00000000000 --- a/regression/contracts/quantifiers-nested-01/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test case checks the handling of a forall expression -nested within another forall expression. diff --git a/regression/contracts/quantifiers-nested-02/main.c b/regression/contracts/quantifiers-nested-02/main.c deleted file mode 100644 index 0e43fb11d53..00000000000 --- a/regression/contracts/quantifiers-nested-02/main.c +++ /dev/null @@ -1,23 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires( - __CPROVER_forall { - int i; - (0 <= i && i < 9) ==> __CPROVER_forall { - int j; - (i <= j && j < 10) ==> arr[i] <= arr[j] - }} - ) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - f1(arr); -} diff --git a/regression/contracts/quantifiers-nested-02/test.desc b/regression/contracts/quantifiers-nested-02/test.desc deleted file mode 100644 index 0d47f965a59..00000000000 --- a/regression/contracts/quantifiers-nested-02/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test case checks the handling of a forall expression -nested within an implication. diff --git a/regression/contracts/quantifiers-nested-04/main.c b/regression/contracts/quantifiers-nested-04/main.c deleted file mode 100644 index 41d875577dd..00000000000 --- a/regression/contracts/quantifiers-nested-04/main.c +++ /dev/null @@ -1,26 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires( - __CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == 0 - } || - arr[9] == -1 || - __CPROVER_exists { - int i; - (0 <= i && i < 10) && arr[i] == i - } - ) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - f1(arr); -} diff --git a/regression/contracts/quantifiers-nested-04/test.desc b/regression/contracts/quantifiers-nested-04/test.desc deleted file mode 100644 index 43eb5969318..00000000000 --- a/regression/contracts/quantifiers-nested-04/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test case checks the handling of both a forall expression -and an exists expression nested within a disjunction. diff --git a/regression/contracts/quantifiers-nested-05/main.c b/regression/contracts/quantifiers-nested-05/main.c deleted file mode 100644 index f667b14b177..00000000000 --- a/regression/contracts/quantifiers-nested-05/main.c +++ /dev/null @@ -1,21 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires( - !__CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == 0 - } - ) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - f1(arr); -} diff --git a/regression/contracts/quantifiers-nested-05/test.desc b/regression/contracts/quantifiers-nested-05/test.desc deleted file mode 100644 index 68d146dfad5..00000000000 --- a/regression/contracts/quantifiers-nested-05/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test case checks the handling of a forall expression -nested within a negation. diff --git a/regression/contracts/quantifiers-nested-06/main.c b/regression/contracts/quantifiers-nested-06/main.c deleted file mode 100644 index fda936fb03e..00000000000 --- a/regression/contracts/quantifiers-nested-06/main.c +++ /dev/null @@ -1,38 +0,0 @@ -#include - -// clang-format off -int f1(int *arr) - __CPROVER_requires( - ( - __CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == 0 - } ? - __CPROVER_exists { - int i; - (0 <= i && i < 10) ==> arr[i] == 0 - } : false - ) && ( - __CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == i - } ? false : - __CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == 0 - } - ) - ) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - f1(arr); -} diff --git a/regression/contracts/quantifiers-nested-06/test.desc b/regression/contracts/quantifiers-nested-06/test.desc deleted file mode 100644 index fef8523ff0a..00000000000 --- a/regression/contracts/quantifiers-nested-06/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -This test case checks the handling of forall and exists expressions -nested within ternary ITE expressions (condition ? true : false). diff --git a/regression/contracts/reject_history_expr_in_assigns_clause/main.c b/regression/contracts/reject_history_expr_in_assigns_clause/main.c deleted file mode 100644 index b0ba3b9841b..00000000000 --- a/regression/contracts/reject_history_expr_in_assigns_clause/main.c +++ /dev/null @@ -1,11 +0,0 @@ -int foo(int *x) __CPROVER_assigns(__CPROVER_old(*x)) -{ - return 0; -} - -int main() -{ - int x; - int ret = foo(&x); - return 0; -} diff --git a/regression/contracts/reject_history_expr_in_assigns_clause/test.desc b/regression/contracts/reject_history_expr_in_assigns_clause/test.desc deleted file mode 100644 index f215cd94255..00000000000 --- a/regression/contracts/reject_history_expr_in_assigns_clause/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^.*error: assigns clause target must be a non-void lvalue or a call to a function returning void$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that __CPROVER_old occurences in assigns clauses -are detected and rejected. diff --git a/regression/contracts/reject_history_expr_in_preconditions/main.c b/regression/contracts/reject_history_expr_in_preconditions/main.c deleted file mode 100644 index 02e4e043a92..00000000000 --- a/regression/contracts/reject_history_expr_in_preconditions/main.c +++ /dev/null @@ -1,11 +0,0 @@ -int foo(int *x) __CPROVER_requires(__CPROVER_old(*x)) -{ - return 0; -} - -int main() -{ - int x; - int retval = foo(&x); - return 0; -} diff --git a/regression/contracts/reject_history_expr_in_preconditions/test.desc b/regression/contracts/reject_history_expr_in_preconditions/test.desc deleted file mode 100644 index 6c548ddfcd2..00000000000 --- a/regression/contracts/reject_history_expr_in_preconditions/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: __CPROVER_old is not allowed in preconditions.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that __CPROVER_old occurences in preconditions -are detected and rejected. diff --git a/regression/contracts/reject_return_value_in_assigns_clause/main.c b/regression/contracts/reject_return_value_in_assigns_clause/main.c deleted file mode 100644 index dfc0417b157..00000000000 --- a/regression/contracts/reject_return_value_in_assigns_clause/main.c +++ /dev/null @@ -1,10 +0,0 @@ -int foo() __CPROVER_assigns(__CPROVER_return_value) -{ - return 0; -} - -int main() -{ - int x = foo(); - return 0; -} diff --git a/regression/contracts/reject_return_value_in_assigns_clause/test.desc b/regression/contracts/reject_return_value_in_assigns_clause/test.desc deleted file mode 100644 index ed7730dd1ae..00000000000 --- a/regression/contracts/reject_return_value_in_assigns_clause/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: __CPROVER_return_value is not allowed in assigns clauses.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that __CPROVER_return_value occurences in assigns clauses -are detected and rejected. diff --git a/regression/contracts/reject_return_value_in_preconditions/main.c b/regression/contracts/reject_return_value_in_preconditions/main.c deleted file mode 100644 index ee9e6f00dd2..00000000000 --- a/regression/contracts/reject_return_value_in_preconditions/main.c +++ /dev/null @@ -1,10 +0,0 @@ -int foo() __CPROVER_requires(__CPROVER_return_value == 0) -{ - return 0; -} - -int main() -{ - int x = foo(); - return 0; -} diff --git a/regression/contracts/reject_return_value_in_preconditions/test.desc b/regression/contracts/reject_return_value_in_preconditions/test.desc deleted file mode 100644 index 3ab8474ce0e..00000000000 --- a/regression/contracts/reject_return_value_in_preconditions/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: __CPROVER_return_value is not allowed in preconditions.$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that __CPROVER_return_value occurences in preconditions -are detected and rejected. diff --git a/regression/contracts/trivial_contract_enforce/main.c b/regression/contracts/trivial_contract_enforce/main.c deleted file mode 100644 index 7c566446339..00000000000 --- a/regression/contracts/trivial_contract_enforce/main.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -int foo(int *x) __CPROVER_requires(x != NULL) -{ - return *x + 5; -} - -int main() -{ - int n = 10; - assert(foo(&n) != 15); - return 0; -} diff --git a/regression/contracts/trivial_contract_enforce/test.desc b/regression/contracts/trivial_contract_enforce/test.desc deleted file mode 100644 index 949e13ea1b6..00000000000 --- a/regression/contracts/trivial_contract_enforce/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15: FAILURE$ -^VERIFICATION FAILED$ --- --- -Check whether CBMC doesn't crash when enforcing trivial contracts, i.e., -the postcondition is true (default when missing) and therefore there is -nothing to check/assert. diff --git a/regression/contracts/trivial_contract_replace/main.c b/regression/contracts/trivial_contract_replace/main.c deleted file mode 100644 index 6e6cb282db6..00000000000 --- a/regression/contracts/trivial_contract_replace/main.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -int foo(int *x) __CPROVER_ensures(__CPROVER_return_value == *x + 5) -{ - return *x + 5; -} - -int main() -{ - int n = 10; - assert(foo(&n) != 15); - return 0; -} diff --git a/regression/contracts/trivial_contract_replace/test.desc b/regression/contracts/trivial_contract_replace/test.desc deleted file mode 100644 index 78a1e25bbc6..00000000000 --- a/regression/contracts/trivial_contract_replace/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15: FAILURE$ -^VERIFICATION FAILED$ --- --- -Check whether CBMC doesn't crash when replacing trivial contracts, i.e., -the precondition is true (default when missing) and therefore there is -nothing to check/assert. diff --git a/regression/contracts/typed_target_fail_wrong_nof_operand/main.c b/regression/contracts/typed_target_fail_wrong_nof_operand/main.c deleted file mode 100644 index b4c3509a20e..00000000000 --- a/regression/contracts/typed_target_fail_wrong_nof_operand/main.c +++ /dev/null @@ -1,10 +0,0 @@ -int foo(int x, int y) __CPROVER_assigns(__CPROVER_typed_target(x, y)) -{ - return 0; -} - -int main() -{ - int ret = foo(1, 2); - return 0; -} diff --git a/regression/contracts/typed_target_fail_wrong_nof_operand/test.desc b/regression/contracts/typed_target_fail_wrong_nof_operand/test.desc deleted file mode 100644 index 2bb63198217..00000000000 --- a/regression/contracts/typed_target_fail_wrong_nof_operand/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---enforce-contract foo -^main.c.*error: expected 1 argument for __CPROVER_typed_target, found 2$ -^CONVERSION ERROR$ -^EXIT=(1|64)$ -^SIGNAL=0$ --- --- -This test checks that incorrect uses of __CPROVER_typed_target are detected and -rejected. diff --git a/regression/contracts/typed_target_pointer/main.c b/regression/contracts/typed_target_pointer/main.c deleted file mode 100644 index c38602a9040..00000000000 --- a/regression/contracts/typed_target_pointer/main.c +++ /dev/null @@ -1,13 +0,0 @@ -int foo(int *x, int *y) - __CPROVER_assigns(__CPROVER_typed_target(x), __CPROVER_typed_target(*y)) -{ - return 0; -} - -int main() -{ - int x; - int y; - int ret = foo(&x, &y); - return 0; -} diff --git a/regression/contracts/typed_target_pointer/test.desc b/regression/contracts/typed_target_pointer/test.desc deleted file mode 100644 index 10f4d922ccb..00000000000 --- a/regression/contracts/typed_target_pointer/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---enforce-contract foo -^\[foo.assigns.\d+\].* Check that __CPROVER_assignable\(\(void \*\)&x, .*, TRUE\) is valid: SUCCESS$ -^\[foo.assigns.\d+\].* Check that __CPROVER_assignable\(\(void \*\)&\(\*y\), .*, FALSE\) is valid: SUCCESS$ -^VERIFICATION SUCCESSFUL$ -^EXIT=0$ -^SIGNAL=0$ --- --- -This test checks __CPROVER_typed_target calls with pointer arguments -get translated to __CPROVER_assignable(x, ... , TRUE), -and that calls with non pointer arguments get translated to -__CPROVER_assignable(x, ... , FALSE). diff --git a/regression/contracts/used_return_value/main.c b/regression/contracts/used_return_value/main.c deleted file mode 100644 index ce94428e5f3..00000000000 --- a/regression/contracts/used_return_value/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int get_at_idx(int const *const arr, const size_t len, const size_t idx) - __CPROVER_requires(__CPROVER_r_ok(arr, len) && idx < len) - __CPROVER_ensures(__CPROVER_return_value == arr[idx]) -{ - return arr[idx]; -} - -void main() -{ - int a[5] = {0}; - a[3] = 7; - int x = get_at_idx(a, 5, 3); - assert(x == 7); -} diff --git a/regression/contracts/used_return_value/test.desc b/regression/contracts/used_return_value/test.desc deleted file mode 100644 index e937ca1c01e..00000000000 --- a/regression/contracts/used_return_value/test.desc +++ /dev/null @@ -1,8 +0,0 @@ -CORE -main.c ---replace-call-with-contract get_at_idx -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- From 205e1236e44a0bfc4feea963babe4c76f30bc7f1 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 7 Mar 2023 14:21:38 +0000 Subject: [PATCH 2/2] De-duplicate contracts regression tests (part 2) Removal of duplicates based on a manual review of the diff between test directories of the same name. --- .../assigns-local-composite/test.desc | 2 +- .../test.desc | 2 +- .../enforce.desc | 2 +- .../assigns_validity_pointer_02/test.desc | 4 +- .../function_check_01/test.desc | 2 +- .../function_check_03/test.desc | 2 +- .../function_check_04/test.desc | 2 +- .../function_check_05/test.desc | 2 +- .../function_check_mem_01/test.desc | 2 +- .../history-pointer-enforce-09/test.desc | 4 +- .../is_fresh_indirect_calls/test.desc | 2 +- .../quantifiers-exists-both-enforce/test.desc | 4 +- .../quantifiers-exists-both-replace/test.desc | 4 +- .../test.desc | 4 +- .../test.desc | 6 +- .../quantifiers-forall-both-enforce/test.desc | 4 +- .../quantifiers-forall-both-replace/test.desc | 4 +- .../test.desc | 4 +- .../test.desc | 6 +- .../replace-nondet-return-value/test.desc | 2 +- .../test_aliasing_replace/test.desc | 4 +- .../test_array_memory_enforce/test.desc | 10 +- .../test_possibly_aliased_arguments/test.desc | 4 +- .../test_scalar_memory_enforce/test.desc | 6 +- .../test_struct_enforce/test.desc | 4 +- .../test_struct_member_enforce/test.desc | 4 +- .../test_struct_replace/test.desc | 4 +- .../contracts/assigns-local-composite/main.c | 104 ------------------ .../assigns-local-composite/test.desc | 12 -- .../header.h | 11 -- .../main.c | 9 -- .../test.desc | 13 --- .../utility.h | 40 ------- .../enforce.desc | 9 -- .../assigns_validity_pointer_02/main.c | 35 ------ .../assigns_validity_pointer_02/test.desc | 19 ---- regression/contracts/function_check_01/main.c | 31 ------ .../contracts/function_check_01/test.desc | 9 -- regression/contracts/function_check_03/main.c | 26 ----- .../contracts/function_check_03/test.desc | 10 -- regression/contracts/function_check_04/main.c | 19 ---- .../contracts/function_check_04/test.desc | 13 --- regression/contracts/function_check_05/main.c | 26 ----- .../contracts/function_check_05/test.desc | 12 -- .../contracts/function_check_mem_01/main.c | 40 ------- .../contracts/function_check_mem_01/test.desc | 10 -- .../history-pointer-enforce-09/main.c | 23 ---- .../history-pointer-enforce-09/test.desc | 13 --- .../contracts/is_fresh_indirect_calls/main.c | 43 -------- .../is_fresh_indirect_calls/test.desc | 24 ---- .../quantifiers-exists-both-enforce/main.c | 20 ---- .../quantifiers-exists-both-enforce/test.desc | 16 --- .../quantifiers-exists-both-replace/main.c | 42 ------- .../quantifiers-exists-both-replace/test.desc | 16 --- .../main.c | 55 --------- .../test.desc | 14 --- .../main.c | 34 ------ .../test.desc | 17 --- .../quantifiers-forall-both-enforce/main.c | 20 ---- .../quantifiers-forall-both-enforce/test.desc | 16 --- .../quantifiers-forall-both-replace/main.c | 38 ------- .../quantifiers-forall-both-replace/test.desc | 16 --- .../main.c | 32 ------ .../test.desc | 16 --- .../main.c | 33 ------ .../test.desc | 14 --- .../replace-nondet-return-value/main.c | 23 ---- .../replace-nondet-return-value/test.desc | 20 ---- .../contracts/test_aliasing_replace/main.c | 32 ------ .../contracts/test_aliasing_replace/test.desc | 12 -- .../test_array_memory_enforce/main.c | 41 ------- .../test_array_memory_enforce/test.desc | 16 --- .../test_possibly_aliased_arguments/main.c | 26 ----- .../test_possibly_aliased_arguments/test.desc | 11 -- .../test_scalar_memory_enforce/main.c | 37 ------- .../test_scalar_memory_enforce/test.desc | 12 -- .../contracts/test_struct_enforce/main.c | 30 ----- .../contracts/test_struct_enforce/test.desc | 14 --- .../test_struct_member_enforce/main.c | 30 ----- .../test_struct_member_enforce/test.desc | 13 --- .../contracts/test_struct_replace/main.c | 35 ------ .../contracts/test_struct_replace/test.desc | 13 --- 82 files changed, 50 insertions(+), 1365 deletions(-) delete mode 100644 regression/contracts/assigns-local-composite/main.c delete mode 100644 regression/contracts/assigns-local-composite/test.desc delete mode 100644 regression/contracts/assigns_enforce_functions_in_contracts/header.h delete mode 100644 regression/contracts/assigns_enforce_functions_in_contracts/main.c delete mode 100644 regression/contracts/assigns_enforce_functions_in_contracts/test.desc delete mode 100644 regression/contracts/assigns_enforce_functions_in_contracts/utility.h delete mode 100644 regression/contracts/assigns_replace_havoc_dependent_targets_fail/enforce.desc delete mode 100644 regression/contracts/assigns_validity_pointer_02/main.c delete mode 100644 regression/contracts/assigns_validity_pointer_02/test.desc delete mode 100644 regression/contracts/function_check_01/main.c delete mode 100644 regression/contracts/function_check_01/test.desc delete mode 100644 regression/contracts/function_check_03/main.c delete mode 100644 regression/contracts/function_check_03/test.desc delete mode 100644 regression/contracts/function_check_04/main.c delete mode 100644 regression/contracts/function_check_04/test.desc delete mode 100644 regression/contracts/function_check_05/main.c delete mode 100644 regression/contracts/function_check_05/test.desc delete mode 100644 regression/contracts/function_check_mem_01/main.c delete mode 100644 regression/contracts/function_check_mem_01/test.desc delete mode 100644 regression/contracts/history-pointer-enforce-09/main.c delete mode 100644 regression/contracts/history-pointer-enforce-09/test.desc delete mode 100644 regression/contracts/is_fresh_indirect_calls/main.c delete mode 100644 regression/contracts/is_fresh_indirect_calls/test.desc delete mode 100644 regression/contracts/quantifiers-exists-both-enforce/main.c delete mode 100644 regression/contracts/quantifiers-exists-both-enforce/test.desc delete mode 100644 regression/contracts/quantifiers-exists-both-replace/main.c delete mode 100644 regression/contracts/quantifiers-exists-both-replace/test.desc delete mode 100644 regression/contracts/quantifiers-exists-requires-enforce/main.c delete mode 100644 regression/contracts/quantifiers-exists-requires-enforce/test.desc delete mode 100644 regression/contracts/quantifiers-exists-requires-replace/main.c delete mode 100644 regression/contracts/quantifiers-exists-requires-replace/test.desc delete mode 100644 regression/contracts/quantifiers-forall-both-enforce/main.c delete mode 100644 regression/contracts/quantifiers-forall-both-enforce/test.desc delete mode 100644 regression/contracts/quantifiers-forall-both-replace/main.c delete mode 100644 regression/contracts/quantifiers-forall-both-replace/test.desc delete mode 100644 regression/contracts/quantifiers-forall-requires-enforce/main.c delete mode 100644 regression/contracts/quantifiers-forall-requires-enforce/test.desc delete mode 100644 regression/contracts/quantifiers-forall-requires-replace/main.c delete mode 100644 regression/contracts/quantifiers-forall-requires-replace/test.desc delete mode 100644 regression/contracts/replace-nondet-return-value/main.c delete mode 100644 regression/contracts/replace-nondet-return-value/test.desc delete mode 100644 regression/contracts/test_aliasing_replace/main.c delete mode 100644 regression/contracts/test_aliasing_replace/test.desc delete mode 100644 regression/contracts/test_array_memory_enforce/main.c delete mode 100644 regression/contracts/test_array_memory_enforce/test.desc delete mode 100644 regression/contracts/test_possibly_aliased_arguments/main.c delete mode 100644 regression/contracts/test_possibly_aliased_arguments/test.desc delete mode 100644 regression/contracts/test_scalar_memory_enforce/main.c delete mode 100644 regression/contracts/test_scalar_memory_enforce/test.desc delete mode 100644 regression/contracts/test_struct_enforce/main.c delete mode 100644 regression/contracts/test_struct_enforce/test.desc delete mode 100644 regression/contracts/test_struct_member_enforce/main.c delete mode 100644 regression/contracts/test_struct_member_enforce/test.desc delete mode 100644 regression/contracts/test_struct_replace/main.c delete mode 100644 regression/contracts/test_struct_replace/test.desc diff --git a/regression/contracts-dfcc/assigns-local-composite/test.desc b/regression/contracts-dfcc/assigns-local-composite/test.desc index ea048658671..261546f1591 100644 --- a/regression/contracts-dfcc/assigns-local-composite/test.desc +++ b/regression/contracts-dfcc/assigns-local-composite/test.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc b/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc index 02cc9825eac..692d283d68e 100644 --- a/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc +++ b/regression/contracts-dfcc/assigns_enforce_functions_in_contracts/test.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ diff --git a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc index 6400f363eb8..5b3e7400a5b 100644 --- a/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc +++ b/regression/contracts-dfcc/assigns_replace_havoc_dependent_targets_fail/enforce.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main_enforce.c --dfcc main --enforce-contract resize_vec _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc b/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc index 6d175bf55cb..7729123b8a8 100644 --- a/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc +++ b/regression/contracts-dfcc/assigns_validity_pointer_02/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ ^SIGNAL=0$ -^\[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS$ +^\[foo.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::foo for function foo)?: SUCCESS$ ^\[bar.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS$ ^\[bar.assigns.\d+\] line \d+ Check that \*y is assignable: SUCCESS$ ^\[baz.assigns.\d+\] line \d+ Check that \*z is assignable: SUCCESS$ diff --git a/regression/contracts-dfcc/function_check_01/test.desc b/regression/contracts-dfcc/function_check_01/test.desc index a10b7ee834c..5400a943e42 100644 --- a/regression/contracts-dfcc/function_check_01/test.desc +++ b/regression/contracts-dfcc/function_check_01/test.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract min ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_03/test.desc b/regression/contracts-dfcc/function_check_03/test.desc index 86eab18cd32..9bb23a02927 100644 --- a/regression/contracts-dfcc/function_check_03/test.desc +++ b/regression/contracts-dfcc/function_check_03/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG dfcc-only +KNOWNBUG main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_04/test.desc b/regression/contracts-dfcc/function_check_04/test.desc index 5ae8d53c711..8b620b567ee 100644 --- a/regression/contracts-dfcc/function_check_04/test.desc +++ b/regression/contracts-dfcc/function_check_04/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG dfcc-only +KNOWNBUG main.c --dfcc main --apply-code-contracts ^EXIT=10$ diff --git a/regression/contracts-dfcc/function_check_05/test.desc b/regression/contracts-dfcc/function_check_05/test.desc index aca47ab5193..a9157dcc978 100644 --- a/regression/contracts-dfcc/function_check_05/test.desc +++ b/regression/contracts-dfcc/function_check_05/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG dfcc-only +KNOWNBUG main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/function_check_mem_01/test.desc b/regression/contracts-dfcc/function_check_mem_01/test.desc index ffb9a75db09..ad947b626ae 100644 --- a/regression/contracts-dfcc/function_check_mem_01/test.desc +++ b/regression/contracts-dfcc/function_check_mem_01/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG dfcc-only +KNOWNBUG main.c --dfcc main --check-code-contracts ^EXIT=0$ diff --git a/regression/contracts-dfcc/history-pointer-enforce-09/test.desc b/regression/contracts-dfcc/history-pointer-enforce-09/test.desc index 32926316e00..f3756a86a59 100644 --- a/regression/contracts-dfcc/history-pointer-enforce-09/test.desc +++ b/regression/contracts-dfcc/history-pointer-enforce-09/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ ^SIGNAL=0$ -^\[foo.postcondition.\d+\] line \d+ Check ensures clause of contract contract::foo for function foo: SUCCESS$ +^\[foo.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::foo for function foo)?: SUCCESS$ ^\[foo.assigns.\d+\] line \d+ Check that p->y is assignable: SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- diff --git a/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc b/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc index 16cf4fe9f39..9934d9515a4 100644 --- a/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc +++ b/regression/contracts-dfcc/is_fresh_indirect_calls/test.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract foo ^\[main.assertion.\d+\].*c is rw_ok: SUCCESS$ diff --git a/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc b/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc index 17b8b98d476..54dca98568e 100644 --- a/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-both-enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::f1 for function f1)?: SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc b/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc index b7ed0fcab66..d26b261e946 100644 --- a/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-both-replace/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.precondition.\d+\] line \d+ Check requires clause of (contract contract::f1 for function f1|f1 in main): SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc b/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc index aa98813d628..3f55cae9ba2 100644 --- a/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-requires-enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::f1 for function f1)?: SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc b/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc index 87b9dc50fd8..96d1ffc6191 100644 --- a/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-exists-requires-replace/test.desc @@ -1,10 +1,10 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract f1 --replace-call-with-contract f2 ^EXIT=10$ ^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of contract contract::f1 for function f1: SUCCESS$ -^\[f2.precondition.\d+\] line \d+ Check requires clause of contract contract::f2 for function f2: FAILURE$ +^\[f1.precondition.\d+\] line \d+ Check requires clause of (contract contract::f1 for function f1|f1 in main): SUCCESS$ +^\[f2.precondition.\d+\] line \d+ Check requires clause of (contract contract::f2 for function f2|f2 in main): FAILURE$ ^VERIFICATION FAILED$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc b/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc index 985cd8a5fc4..90d6a6402e5 100644 --- a/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-both-enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::f1 for function f1)?: SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc b/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc index 8ce8b0988af..21981c6325e 100644 --- a/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-both-replace/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.precondition.\d+\] line \d+ Check requires clause of (contract contract::f1 for function f1|f1 in main): SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc b/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc index 66cf432945f..43454b1e004 100644 --- a/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-requires-enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::f1 for function f1)?: SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring diff --git a/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc b/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc index 341c82a6191..bd5842afe6b 100644 --- a/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc +++ b/regression/contracts-dfcc/quantifiers-forall-requires-replace/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract f1 ^EXIT=0$ ^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of contract contract::f1 for function f1: SUCCESS$ +^\[f1.precondition.\d+\] line \d+ Check requires clause of (contract contract::f1 for function f1|f1 in main): SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring @@ -11,4 +11,4 @@ main.c The purpose of this test is to ensure that we can safely use __CPROVER_forall within positive contexts (replaced REQUIRES clauses). -This is fully supported (without requiring full unrolling) with the SAT backend. \ No newline at end of file +This is fully supported (without requiring full unrolling) with the SAT backend. diff --git a/regression/contracts-dfcc/replace-nondet-return-value/test.desc b/regression/contracts-dfcc/replace-nondet-return-value/test.desc index c4005eac261..fe336e5d534 100644 --- a/regression/contracts-dfcc/replace-nondet-return-value/test.desc +++ b/regression/contracts-dfcc/replace-nondet-return-value/test.desc @@ -1,4 +1,4 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract cmp ^EXIT=10$ diff --git a/regression/contracts-dfcc/test_aliasing_replace/test.desc b/regression/contracts-dfcc/test_aliasing_replace/test.desc index 0e5944d5165..0b2e2ae93d7 100644 --- a/regression/contracts-dfcc/test_aliasing_replace/test.desc +++ b/regression/contracts-dfcc/test_aliasing_replace/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract foo ^EXIT=10$ ^SIGNAL=0$ -^\[foo.precondition.\d+\] line \d+ Check requires clause of contract contract::foo for function foo: FAILURE$ +^\[foo.precondition.\d+\] line \d+ Check requires clause of (contract contract::foo for function foo|foo in main): FAILURE$ ^\[main.assertion.\d+\] line \d+ assertion \!\(n \< 4\): SUCCESS$ ^VERIFICATION FAILED$ -- diff --git a/regression/contracts-dfcc/test_array_memory_enforce/test.desc b/regression/contracts-dfcc/test_array_memory_enforce/test.desc index dcef80857b4..3ed2e82468f 100644 --- a/regression/contracts-dfcc/test_array_memory_enforce/test.desc +++ b/regression/contracts-dfcc/test_array_memory_enforce/test.desc @@ -1,12 +1,12 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ ^SIGNAL=0$ -\[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS -\[foo.assigns.\d+\].*Check that \*x is assignable: SUCCESS -\[foo.assigns.\d+\].*Check that x\[\(.* int\)5\] is assignable: SUCCESS -\[foo.assigns.\d+\].*Check that x\[\(.* int\)9\] is assignable: SUCCESS +\[foo.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::foo for function foo)?: SUCCESS +\[foo.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS +\[foo.assigns.\d+\] line \d+ Check that x\[\(.* int\)5\] is assignable: SUCCESS +\[foo.assigns.\d+\] line \d+ Check that x\[\(.* int\)9\] is assignable: SUCCESS ^VERIFICATION SUCCESSFUL$ -- -- diff --git a/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc b/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc index f7071961a2f..d7c7df41244 100644 --- a/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc +++ b/regression/contracts-dfcc/test_possibly_aliased_arguments/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract sub_ptr_values ^EXIT=0$ ^SIGNAL=0$ -^\[sub_ptr_values.precondition.\d+\] line \d+ Check requires clause of contract contract::sub_ptr_values for function sub_ptr_values: SUCCESS$ +^\[sub_ptr_values.precondition.\d+\] line \d+ Check requires clause of (contract contract::sub_ptr_values for function sub_ptr_values|sub_ptr_values in main): SUCCESS$ ^VERIFICATION SUCCESSFUL$ -- -- diff --git a/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc b/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc index bb6515fb818..ad6e7372ed5 100644 --- a/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc +++ b/regression/contracts-dfcc/test_scalar_memory_enforce/test.desc @@ -1,8 +1,8 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo -\[foo.postcondition.\d+\].*Check ensures clause of contract contract::foo for function foo: SUCCESS -\[foo.assigns.\d+\].*Check that \*x is assignable: SUCCESS +\[foo.postcondition.\d+\].*Check ensures clause( of contract contract::foo for function foo)?: SUCCESS +\[foo.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS ^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ diff --git a/regression/contracts-dfcc/test_struct_enforce/test.desc b/regression/contracts-dfcc/test_struct_enforce/test.desc index bdd17691915..5551d67dbbf 100644 --- a/regression/contracts-dfcc/test_struct_enforce/test.desc +++ b/regression/contracts-dfcc/test_struct_enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ ^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause of contract contract::foo for function foo: SUCCESS$ +\[foo.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::foo for function foo)?: SUCCESS$ \[foo.assigns.\d+\] line \d+ Check that x->baz is assignable: SUCCESS \[foo.assigns.\d+\] line \d+ Check that x->qux is assignable: SUCCESS \[main.assertion.\d+\] line \d+ assertion rval \=\= 10: SUCCESS diff --git a/regression/contracts-dfcc/test_struct_member_enforce/test.desc b/regression/contracts-dfcc/test_struct_member_enforce/test.desc index 6a3eb8c099e..5c1636b03be 100644 --- a/regression/contracts-dfcc/test_struct_member_enforce/test.desc +++ b/regression/contracts-dfcc/test_struct_member_enforce/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --enforce-contract foo ^EXIT=0$ ^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause of contract contract::foo for function foo: SUCCESS$ +\[foo.postcondition.\d+\] line \d+ Check ensures clause( of contract contract::foo for function foo)?: SUCCESS$ \[foo.assigns.\d+\] line \d+ Check that x->str\[\(.*\)\(x->len - 1\)\] is assignable: SUCCESS \[main.assertion.\d+\] line \d+ assertion rval \=\= 128: SUCCESS ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts-dfcc/test_struct_replace/test.desc b/regression/contracts-dfcc/test_struct_replace/test.desc index 7231a54da39..59fa26e299b 100644 --- a/regression/contracts-dfcc/test_struct_replace/test.desc +++ b/regression/contracts-dfcc/test_struct_replace/test.desc @@ -1,9 +1,9 @@ -CORE dfcc-only +CORE main.c --dfcc main --replace-call-with-contract foo ^EXIT=0$ ^SIGNAL=0$ -^\[foo.precondition.\d+\] line \d+ Check requires clause of contract contract::foo for function foo: SUCCESS$ +^\[foo.precondition.\d+\] line \d+ Check requires clause of (contract contract::foo for function foo|foo in main): SUCCESS$ ^\[main.assertion.\d+\] line \d+ assertion rval \=\= x->baz \+ x->qux: SUCCESS$ ^\[main.assertion.\d+\] line \d+ assertion \*x \=\= \*y: SUCCESS$ ^VERIFICATION SUCCESSFUL$ diff --git a/regression/contracts/assigns-local-composite/main.c b/regression/contracts/assigns-local-composite/main.c deleted file mode 100644 index 7b102af7cdd..00000000000 --- a/regression/contracts/assigns-local-composite/main.c +++ /dev/null @@ -1,104 +0,0 @@ -struct st1 -{ - int a; - int arr[10]; -}; - -struct st2 -{ - int a; - struct st1 arr[10]; -}; - -struct st3 -{ - struct st1 *s1; - struct st2 *s2; - struct st1 arr1[10]; - struct st2 arr2[10]; -}; - -enum tagt -{ - CHAR, - INT, - CHAR_PTR, - INT_ARR, - STRUCT_ST1_ARR -}; - -// clang-format off -struct taggedt { - enum tagt tag; - union { - struct{ char a; }; - struct{ int b; }; - struct{ char *ptr; }; - struct{ int arr[10]; }; - struct{ struct st1 arr1[10]; }; - }; -}; -// clang-format on - -int foo(int i) __CPROVER_assigns() -{ - // all accesses to locals should pass - int arr[10]; - struct st1 s1; - struct st2 s2; - struct st1 dirty_s1; - struct st3 s3; - s3.s1 = &dirty_s1; - s3.s2 = malloc(sizeof(struct st2)); - - if(0 <= i && i < 10) - { - arr[i] = 0; - s1.a = 0; - s1.arr[i] = 0; - s2.a = 0; - s2.arr[i].a = 0; - s2.arr[i].arr[i] = 0; - s3.s1->a = 0; - s3.s1->arr[i] = 0; - s3.s2->a = 0; - s3.s2->arr[i].a = 0; - s3.s2->arr[i].arr[i] = 0; - *(&(s3.s2->arr[i].arr[0]) + i) = 0; - (&(s3.arr1[0]) + i)->arr[i] = 0; - (&((&(s3.arr2[0]) + i)->arr[i]))->a = 0; - } - - struct taggedt tagged; - switch(tagged.tag) - { - case CHAR: - tagged.a = 0; - break; - case INT: - tagged.b = 0; - break; - case CHAR_PTR: - tagged.ptr = 0; - break; - case INT_ARR: - if(0 <= i && i < 10) - tagged.arr[i] = 0; - break; - case STRUCT_ST1_ARR: - if(0 <= i && i < 10) - { - tagged.arr1[i].a = 0; - tagged.arr1[i].arr[i] = 0; - } - break; - } - - return 0; -} - -void main() -{ - int i; - foo(i); -} diff --git a/regression/contracts/assigns-local-composite/test.desc b/regression/contracts/assigns-local-composite/test.desc deleted file mode 100644 index 1e4b211e77d..00000000000 --- a/regression/contracts/assigns-local-composite/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Checks that assigns clause checking explicitly checks assignments to locally -declared symbols with composite types, when they are dirty. -Out of bounds accesses to locally declared arrays, structs, etc. -will be detected by assigns clause checking. diff --git a/regression/contracts/assigns_enforce_functions_in_contracts/header.h b/regression/contracts/assigns_enforce_functions_in_contracts/header.h deleted file mode 100644 index 1782ab95e64..00000000000 --- a/regression/contracts/assigns_enforce_functions_in_contracts/header.h +++ /dev/null @@ -1,11 +0,0 @@ -#include "utility.h" -#include -#include - -int foo(int *x) __CPROVER_requires(s2n_result_is_ok(validity3(x))) - __CPROVER_assigns(*x) __CPROVER_ensures( - __CPROVER_return_value == *x + 5 && s2n_result_is_ok(validity3(x))) -{ - *x = *x + 0; - return *x + 5; -} diff --git a/regression/contracts/assigns_enforce_functions_in_contracts/main.c b/regression/contracts/assigns_enforce_functions_in_contracts/main.c deleted file mode 100644 index 18f577178e7..00000000000 --- a/regression/contracts/assigns_enforce_functions_in_contracts/main.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "header.h" - -int main() -{ - int *n = malloc(sizeof(*n)); - *n = foo(n); - - return 0; -} diff --git a/regression/contracts/assigns_enforce_functions_in_contracts/test.desc b/regression/contracts/assigns_enforce_functions_in_contracts/test.desc deleted file mode 100644 index 410ca3063f2..00000000000 --- a/regression/contracts/assigns_enforce_functions_in_contracts/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks whether verification succeeds when requires and ensures -contain functions. - -Note: We still don't check for function purity, i.e., -functions in contracts must only work as predicates. diff --git a/regression/contracts/assigns_enforce_functions_in_contracts/utility.h b/regression/contracts/assigns_enforce_functions_in_contracts/utility.h deleted file mode 100644 index e7ab9b16956..00000000000 --- a/regression/contracts/assigns_enforce_functions_in_contracts/utility.h +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -/* Function return code */ -#define S2N_SUCCESS 0 -#define S2N_FAILURE -1 - -/* A value which indicates the outcome of a function */ -typedef struct -{ - int __error_signal; -} s2n_result; - -#define S2N_RESULT s2n_result -#define S2N_RESULT_OK ((s2n_result){S2N_SUCCESS}) -#define S2N_RESULT_ERROR ((s2n_result){S2N_FAILURE}) - -bool s2n_result_is_ok(s2n_result result) -{ - return result.__error_signal == S2N_SUCCESS; -} - -bool validity1(int *x) -{ - return (x > 0); -} - -bool validity2(int *x) -{ - return (x == 0); -} - -S2N_RESULT validity3(int *x) -{ - if(x == NULL) - return S2N_RESULT_ERROR; - if(!validity1(x)) - return S2N_RESULT_ERROR; - return S2N_RESULT_OK; -} diff --git a/regression/contracts/assigns_replace_havoc_dependent_targets_fail/enforce.desc b/regression/contracts/assigns_replace_havoc_dependent_targets_fail/enforce.desc deleted file mode 100644 index efca0a7366c..00000000000 --- a/regression/contracts/assigns_replace_havoc_dependent_targets_fail/enforce.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main_enforce.c ---enforce-contract resize_vec _ --signed-overflow-check --unsigned-overflow-check --pointer-overflow-check -^VERIFICATION SUCCESSFUL$ -^EXIT=0$ -^SIGNAL=0$ --- --- -Verifies the contract being replaced in `replace.desc`. diff --git a/regression/contracts/assigns_validity_pointer_02/main.c b/regression/contracts/assigns_validity_pointer_02/main.c deleted file mode 100644 index ea747322195..00000000000 --- a/regression/contracts/assigns_validity_pointer_02/main.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include - -int *z; - -void bar(int *x, int *y) -{ - *x = 3; - if(y != NULL) - *y = 5; -} - -void baz(int c) -{ - // does a side effect on a global, but - // in the calling context of foo the branch is dead - if(c) - *z = 7; -} - -void foo(int *x) __CPROVER_assigns(*x) __CPROVER_requires(*x > 0) - __CPROVER_ensures(*x == 3) -{ - bar(x, NULL); - *x = 3; - baz(0); -} - -int main() -{ - int n; - foo(&n); - assert(n == 3); - return 0; -} diff --git a/regression/contracts/assigns_validity_pointer_02/test.desc b/regression/contracts/assigns_validity_pointer_02/test.desc deleted file mode 100644 index 0cbf7a50e52..00000000000 --- a/regression/contracts/assigns_validity_pointer_02/test.desc +++ /dev/null @@ -1,19 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^\[bar.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS$ -^\[bar.assigns.\d+\] line \d+ Check that \*y is assignable: SUCCESS$ -^\[baz.assigns.\d+\] line \d+ Check that \*z is assignable: SUCCESS$ -^\[foo.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^\[postcondition.\d+\] file main.c line \d+ Check ensures clause: FAILURE$ -^\[foo.\d+\] line \d+ Check that \*x is assignable: FAILURE$ --- -This test checks that assigns clause checking -is control-flow sensitive. The assignment to the global *z -in baz is inhibited in the calling context of foo, so it does -not violate the assigns clause of foo. diff --git a/regression/contracts/function_check_01/main.c b/regression/contracts/function_check_01/main.c deleted file mode 100644 index 27bc259c58b..00000000000 --- a/regression/contracts/function_check_01/main.c +++ /dev/null @@ -1,31 +0,0 @@ -// function_check_01 - -// This tests a simple example of a function with requires and -// ensures which should both be satisfied. - -#include - -int min(int a, int b) - __CPROVER_requires(a >= 0 && b >= 0) - __CPROVER_ensures(__CPROVER_return_value <= a && - __CPROVER_return_value <= b && - (__CPROVER_return_value == a || __CPROVER_return_value == b) - ) -{ - if(a <= b) - { - return a; - } - else - { - return b; - } -} - -int main() -{ - int x, y, z; - __CPROVER_assume(x >= 0 && y >= 0); - z = min(x, y); - assert(z <= x); -} diff --git a/regression/contracts/function_check_01/test.desc b/regression/contracts/function_check_01/test.desc deleted file mode 100644 index 3a1fd508339..00000000000 --- a/regression/contracts/function_check_01/test.desc +++ /dev/null @@ -1,9 +0,0 @@ -CORE -main.c ---replace-call-with-contract min -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This tests a simple example of a function with requires and ensures which should both be satisfied. diff --git a/regression/contracts/function_check_03/main.c b/regression/contracts/function_check_03/main.c deleted file mode 100644 index 2e2e9af0d9f..00000000000 --- a/regression/contracts/function_check_03/main.c +++ /dev/null @@ -1,26 +0,0 @@ -// function_check_03 - -// This extends function_check_02's test of quantifiers in ensures -// and adds in a loop invariant which can be used to prove the ensures. -// This currently fails because side-effect checking in loop invariants is -// incorrect. - -void initialize(int *arr, int len) - __CPROVER_ensures( - __CPROVER_forall {int i; (0 <= i && i < len) ==> arr[i] == i} - ) -{ - for(int i = 0; i < len; i++) - __CPROVER_loop_invariant( - __CPROVER_forall {int j; (0 <= j && j < i) ==> arr[j] == j} - ) - { - arr[i] = i; - } -} - -int main() -{ - int arr[10]; - initialize(arr, 10); -} diff --git a/regression/contracts/function_check_03/test.desc b/regression/contracts/function_check_03/test.desc deleted file mode 100644 index 14848623f06..00000000000 --- a/regression/contracts/function_check_03/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -KNOWNBUG -main.c ---check-code-contracts -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -Loop invariants currently do not support memory reads in at least some -circumstances. diff --git a/regression/contracts/function_check_04/main.c b/regression/contracts/function_check_04/main.c deleted file mode 100644 index acf0122c5e4..00000000000 --- a/regression/contracts/function_check_04/main.c +++ /dev/null @@ -1,19 +0,0 @@ -// function_check_04 - -// Note that this test is supposed to have an incorrect contract. -// We verify that checking this faulty contract (correctly) yields a failure. - -#include - -int foo() - __CPROVER_ensures(__CPROVER_return_value == 0) -{ - return 1; -} - -int main() -{ - int x = foo(); - assert(x == 0); - return 0; -} diff --git a/regression/contracts/function_check_04/test.desc b/regression/contracts/function_check_04/test.desc deleted file mode 100644 index 256e12092e8..00000000000 --- a/regression/contracts/function_check_04/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -KNOWNBUG -main.c ---apply-code-contracts -^EXIT=10$ -^SIGNAL=0$ -^\[main.assertion.1\] .* assertion x == 0: SUCCESS$ -^\[foo.1\] line 9 .*: FAILURE$ -^VERIFICATION FAILED$ --- --- ---check-code-contracts not implemented yet. ---apply-code-contracts is the current name for the flag. This should be -updated as the flag changes. diff --git a/regression/contracts/function_check_05/main.c b/regression/contracts/function_check_05/main.c deleted file mode 100644 index 14f85546506..00000000000 --- a/regression/contracts/function_check_05/main.c +++ /dev/null @@ -1,26 +0,0 @@ -// function_check_05 - -// This test checks that when a function call is replaced by an invariant, -// it adequately havocs the locations modified by the function. -// This test currently fails because the analysis of what is modified by -// a function is flawed. - -#include - -int foo(int *x) - __CPROVER_ensures(__CPROVER_return_value == 1) -{ - *x = 1; - return 1; -} - -int main() -{ - int y = 0; - int z = foo(&y); - // This assert should fail. - assert(y == 0); - // This one should succeed. - assert(z == 1); - return 0; -} diff --git a/regression/contracts/function_check_05/test.desc b/regression/contracts/function_check_05/test.desc deleted file mode 100644 index 40d58545e0f..00000000000 --- a/regression/contracts/function_check_05/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -KNOWNBUG -main.c ---check-code-contracts -^EXIT=0$ -^SIGNAL=0$ -^\[main.assertion.1\] assertion y == 0: FAILURE$ -^\[main.assertion.2\] assertion z == 1: SUCCESS$ -^\[foo.1\] : SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- --- -Contract checking does not properly havoc function calls. diff --git a/regression/contracts/function_check_mem_01/main.c b/regression/contracts/function_check_mem_01/main.c deleted file mode 100644 index 924cb723c5e..00000000000 --- a/regression/contracts/function_check_mem_01/main.c +++ /dev/null @@ -1,40 +0,0 @@ -// function_check_mem_01 - -// This test checks the use of pointer-related predicates in assumptions and -// requires. -// This test currently fails because of the lack of support for assuming -// pointer predicates. - -#include - -#define __CPROVER_VALID_MEM(ptr, size) \ - __CPROVER_POINTER_OBJECT((ptr)) != __CPROVER_POINTER_OBJECT(NULL) && \ - !__CPROVER_is_invalid_pointer((ptr)) && \ - __CPROVER_POINTER_OBJECT((ptr)) != \ - __CPROVER_POINTER_OBJECT(__CPROVER_deallocated) && \ - __CPROVER_POINTER_OBJECT((ptr)) != \ - __CPROVER_POINTER_OBJECT(__CPROVER_dead_object) && \ - (__builtin_object_size((ptr), 1) >= (size) && \ - __CPROVER_POINTER_OFFSET((ptr)) >= 0l) - -typedef struct bar -{ - int x; - int y; - int z; -} bar; - -void foo(bar *x) - __CPROVER_requires(__CPROVER_VALID_MEM(x, sizeof(bar))) -{ - x->x += 1; - return; -} - -int main() -{ - bar *y; - __CPROVER_assume(__CPROVER_VALID_MEM(y, sizeof(bar))); - y->x = 0; - return 0; -} diff --git a/regression/contracts/function_check_mem_01/test.desc b/regression/contracts/function_check_mem_01/test.desc deleted file mode 100644 index b46799f781b..00000000000 --- a/regression/contracts/function_check_mem_01/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -KNOWNBUG -main.c ---check-code-contracts -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -CBMC currently does not support assumptions about pointers in the general way -that other assumptions are supported. diff --git a/regression/contracts/history-pointer-enforce-09/main.c b/regression/contracts/history-pointer-enforce-09/main.c deleted file mode 100644 index a7b9db78e32..00000000000 --- a/regression/contracts/history-pointer-enforce-09/main.c +++ /dev/null @@ -1,23 +0,0 @@ -#include - -struct pair -{ - int x; - int y; -}; - -void foo(struct pair *p) __CPROVER_assigns(p->y) - __CPROVER_ensures(p->y == __CPROVER_old(p->y) + 5) -{ - p->y = p->y + 5; -} - -int main() -{ - struct pair *p = malloc(sizeof(*p)); - p->x = 2; - p->y = 2; - foo(p); - - return 0; -} diff --git a/regression/contracts/history-pointer-enforce-09/test.desc b/regression/contracts/history-pointer-enforce-09/test.desc deleted file mode 100644 index 4cf2a84e871..00000000000 --- a/regression/contracts/history-pointer-enforce-09/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -^\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^\[foo.assigns.\d+\] line \d+ Check that p->y is assignable: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that history variables are supported for struct members. -By using the --enforce-contract flag, the post-condition (which contains -the history variable) is asserted. In this case, this assertion should pass. diff --git a/regression/contracts/is_fresh_indirect_calls/main.c b/regression/contracts/is_fresh_indirect_calls/main.c deleted file mode 100644 index b528514086e..00000000000 --- a/regression/contracts/is_fresh_indirect_calls/main.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include - -char nondet_char(); - -char *foo(char *a, char *b, size_t s) - // clang-format off -__CPROVER_requires(s > 0) -__CPROVER_requires(__CPROVER_is_fresh(a, s)) -__CPROVER_requires(__CPROVER_is_fresh(b, s)) -__CPROVER_assigns(a[0]) -__CPROVER_ensures(__CPROVER_is_fresh(__CPROVER_return_value, s)) -// clang-format on -{ - a[0] = nondet_char(); - return malloc(s); -} - -char *bar(char *a, char *b, size_t s) -{ - return foo(a, b, s); -} - -int main() -{ - size_t s; - __CPROVER_assume(0 < s && s < __CPROVER_max_malloc_size); - char *a = malloc(s); - char *b = malloc(s); - - char *c = bar(a, b, s); - __CPROVER_assert(__CPROVER_rw_ok(c, s), "c is rw_ok"); - __CPROVER_assert(c != a, "c and a are distinct"); - __CPROVER_assert(c != b, "c and b are distinct"); - - char *d = bar(a, b, s); - __CPROVER_assert(__CPROVER_rw_ok(d, s), "d is rw_ok"); - __CPROVER_assert(d != a, "d and a are distinct"); - __CPROVER_assert(d != b, "d and b are distinct"); - __CPROVER_assert(d != c, "d and c distinct"); - - return 0; -} diff --git a/regression/contracts/is_fresh_indirect_calls/test.desc b/regression/contracts/is_fresh_indirect_calls/test.desc deleted file mode 100644 index 680a01dad5a..00000000000 --- a/regression/contracts/is_fresh_indirect_calls/test.desc +++ /dev/null @@ -1,24 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^\[foo.assigns.\d+\].*Check that a\[.*0\] is valid: SUCCESS$ -^\[main.assertion.\d+\].*c is rw_ok: SUCCESS$ -^\[main.assertion.\d+\].*c and a are distinct: SUCCESS$ -^\[main.assertion.\d+\].*c and b are distinct: SUCCESS$ -^\[main.assertion.\d+\].*d is rw_ok: SUCCESS$ -^\[main.assertion.\d+\].*d and a are distinct: SUCCESS$ -^\[main.assertion.\d+\].*d and b are distinct: SUCCESS$ -^\[main.assertion.\d+\].*d and c distinct: SUCCESS$ -^EXIT=0$ -^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ --- --- -This test checks that the interpretation of is_fresh predicates is -local to a call. `bar` is called twice with the same arguments. -`bar` calls `foo` so `foo` also gets called twice with the same arguments. -The is_fresh preconditions of `foo` are checked and satisfied independently -for each call. -This shows that the memory_map which keeps track of objects seen by the -is_fresh predicates and the input and output of a function call is local to -that function call. diff --git a/regression/contracts/quantifiers-exists-both-enforce/main.c b/regression/contracts/quantifiers-exists-both-enforce/main.c deleted file mode 100644 index d245284d067..00000000000 --- a/regression/contracts/quantifiers-exists-both-enforce/main.c +++ /dev/null @@ -1,20 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires(__CPROVER_exists { - int i; - (0 <= i && i < 8) && arr[i] == 0 - }) - __CPROVER_ensures(__CPROVER_exists { - int i; - (0 <= i && i < 8) && arr[i] == 0 - }) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[8]; - f1(arr); -} diff --git a/regression/contracts/quantifiers-exists-both-enforce/test.desc b/regression/contracts/quantifiers-exists-both-enforce/test.desc deleted file mode 100644 index 644f4800596..00000000000 --- a/regression/contracts/quantifiers-exists-both-enforce/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_exists within both -positive and negative contexts (ENSURES and REQUIRES clauses). - -With the SAT backend existential quantifiers in a positive context, -e.g., the ENSURES clause being enforced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-exists-both-replace/main.c b/regression/contracts/quantifiers-exists-both-replace/main.c deleted file mode 100644 index 85360a7f075..00000000000 --- a/regression/contracts/quantifiers-exists-both-replace/main.c +++ /dev/null @@ -1,42 +0,0 @@ -#include - -#define MAX_LEN 8 - -// clang-format off -int f1(int *arr, int len) - __CPROVER_requires( - len > 0 ==> __CPROVER_exists { - int i; - // constant bounds for explicit unrolling with SAT backend - (0 <= i && i < MAX_LEN) && ( - // actual symbolic bound for `i` - i < len && arr[i] == 0 - ) - } - ) - __CPROVER_ensures( - len > 0 ==> __CPROVER_exists { - int i; - // constant bounds for explicit unrolling with SAT backend - (0 <= i && i < MAX_LEN) && ( - // actual symbolic bound for `i` - i < len && arr[i] == 0 - ) - } - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int len; - __CPROVER_assume(0 <= len && len <= MAX_LEN); - - int *arr = malloc(len); - if(len > 0) - arr[0] = 0; - - f1(arr, len); -} diff --git a/regression/contracts/quantifiers-exists-both-replace/test.desc b/regression/contracts/quantifiers-exists-both-replace/test.desc deleted file mode 100644 index 1d094360b6d..00000000000 --- a/regression/contracts/quantifiers-exists-both-replace/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of f1 in main: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_exists within both -positive and negative contexts (ENSURES and REQUIRES clauses). - -With the SAT backend existential quantifiers in a positive context, -e.g., the REQUIRES clause being replaced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-exists-requires-enforce/main.c b/regression/contracts/quantifiers-exists-requires-enforce/main.c deleted file mode 100644 index c74bbfbb009..00000000000 --- a/regression/contracts/quantifiers-exists-requires-enforce/main.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include - -#define MAX_LEN 10 - -// clang-format off -bool f1(int *arr, int len) - __CPROVER_requires( - len > 0 ==> __CPROVER_exists { - int i; - // test enforcement with symbolic bound - (0 <= i && i < len) && arr[i] == 4 - } - ) - __CPROVER_ensures( - __CPROVER_return_value == true - ) -// clang-format on -{ - bool found_four = false; - if(0 < len) - found_four |= (arr[0] == 4); - if(1 < len) - found_four |= (arr[1] == 4); - if(2 < len) - found_four |= (arr[2] == 4); - if(3 < len) - found_four |= (arr[3] == 4); - if(4 < len) - found_four |= (arr[4] == 4); - if(5 < len) - found_four |= (arr[5] == 4); - if(6 < len) - found_four |= (arr[6] == 4); - if(7 < len) - found_four |= (arr[7] == 4); - if(8 < len) - found_four |= (arr[8] == 4); - - if(9 < len) - found_four |= (arr[9] == 4); - - // clang-format off - return (len > 0 ==> found_four); - // clang-format on -} - -int main() -{ - int len; - __CPROVER_assume(0 <= len && len <= MAX_LEN); - - int *arr = malloc(len * sizeof(int)); - f1(arr, len); -} diff --git a/regression/contracts/quantifiers-exists-requires-enforce/test.desc b/regression/contracts/quantifiers-exists-requires-enforce/test.desc deleted file mode 100644 index a7e28e739cb..00000000000 --- a/regression/contracts/quantifiers-exists-requires-enforce/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_exists -within both negative contexts (enforced REQUIRES clauses). - -This is fully supported (without requiring full unrolling) with the SAT backend. diff --git a/regression/contracts/quantifiers-exists-requires-replace/main.c b/regression/contracts/quantifiers-exists-requires-replace/main.c deleted file mode 100644 index f7c1e5f896a..00000000000 --- a/regression/contracts/quantifiers-exists-requires-replace/main.c +++ /dev/null @@ -1,34 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires(__CPROVER_exists { - int i; - (0 <= i && i < 10) && arr[i] == 0 - }) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -// clang-format off -int f2(int *arr) - __CPROVER_requires(__CPROVER_exists { - int i; - (0 <= i && i < 10) && arr[i] == 1 - }) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - f1(arr); - f2(arr); -} diff --git a/regression/contracts/quantifiers-exists-requires-replace/test.desc b/regression/contracts/quantifiers-exists-requires-replace/test.desc deleted file mode 100644 index 1cc3211e823..00000000000 --- a/regression/contracts/quantifiers-exists-requires-replace/test.desc +++ /dev/null @@ -1,17 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 --replace-call-with-contract f2 -^EXIT=10$ -^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of f1 in main: SUCCESS$ -^\[f2.precondition.\d+\] line \d+ Check requires clause of f2 in main: FAILURE$ -^VERIFICATION FAILED$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_exists -within both positive contexts (replaced REQUIRES clauses). - -With the SAT backend existential quantifiers in a positive context, -e.g., the REQUIRES clause being replaced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-forall-both-enforce/main.c b/regression/contracts/quantifiers-forall-both-enforce/main.c deleted file mode 100644 index d47d59bcc3e..00000000000 --- a/regression/contracts/quantifiers-forall-both-enforce/main.c +++ /dev/null @@ -1,20 +0,0 @@ -// clang-format off -int f1(int *arr) - __CPROVER_requires(__CPROVER_forall { - int i; - (0 <= i && i < 8) ==> arr[i] == 0 - }) - __CPROVER_ensures(__CPROVER_forall { - int i; - (0 <= i && i < 8) ==> arr[i] == 0 - }) -// clang-format on -{ - return 0; -} - -int main() -{ - int arr[8]; - f1(arr); -} diff --git a/regression/contracts/quantifiers-forall-both-enforce/test.desc b/regression/contracts/quantifiers-forall-both-enforce/test.desc deleted file mode 100644 index dcd56763a56..00000000000 --- a/regression/contracts/quantifiers-forall-both-enforce/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_forall within both -positive and negative contexts (ENSURES and REQUIRES clauses). - -With the SAT backend universal quantifiers in a negative context, -e.g., the REQUIRES clause being enforced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-forall-both-replace/main.c b/regression/contracts/quantifiers-forall-both-replace/main.c deleted file mode 100644 index 0bfda4af0e1..00000000000 --- a/regression/contracts/quantifiers-forall-both-replace/main.c +++ /dev/null @@ -1,38 +0,0 @@ -#include - -#define MAX_LEN 8 - -// clang-format off -int f1(int *arr, int len) - __CPROVER_requires(__CPROVER_forall { - int i; - // constant bounds for explicit unrolling with SAT backend - (0 <= i && i < MAX_LEN) ==> ( - // actual symbolic bound for `i` - i < len ==> arr[i] == 0 - ) - }) - __CPROVER_ensures(__CPROVER_forall { - int i; - // positive context, so symbolic bounds are fine - (0 <= i && i < len) ==> arr[i] == 0 - }) -// clang-format on -{ - return 0; -} - -int main() -{ - int len; - __CPROVER_assume(0 <= len && len <= MAX_LEN); - - int *arr = malloc(len); - for(int i = 0; i < MAX_LEN; ++i) - { - if(i < len) - arr[i] = 0; - } - - f1(arr, len); -} diff --git a/regression/contracts/quantifiers-forall-both-replace/test.desc b/regression/contracts/quantifiers-forall-both-replace/test.desc deleted file mode 100644 index 34b39befb51..00000000000 --- a/regression/contracts/quantifiers-forall-both-replace/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of f1 in main: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_forall within both -positive and negative contexts (ENSURES and REQUIRES clauses). - -With the SAT backend universal quantifiers in a negative context, -e.g., the ENSURES clause being replaced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-forall-requires-enforce/main.c b/regression/contracts/quantifiers-forall-requires-enforce/main.c deleted file mode 100644 index 2040549f0f4..00000000000 --- a/regression/contracts/quantifiers-forall-requires-enforce/main.c +++ /dev/null @@ -1,32 +0,0 @@ -#include - -// clang-format off -bool f1(int *arr) - __CPROVER_requires(__CPROVER_forall { - int i; - (0 <= i && i < 10) ==> arr[i] == i - }) - __CPROVER_ensures( - __CPROVER_return_value == true - ) -// clang-format on -{ - bool is_identity = true; - is_identity &= (arr[0] == 0); - is_identity &= (arr[1] == 1); - is_identity &= (arr[2] == 2); - is_identity &= (arr[3] == 3); - is_identity &= (arr[4] == 4); - is_identity &= (arr[5] == 5); - is_identity &= (arr[6] == 6); - is_identity &= (arr[7] == 7); - is_identity &= (arr[8] == 8); - is_identity &= (arr[9] == 9); - return is_identity; -} - -int main() -{ - int arr[10]; - f1(arr); -} diff --git a/regression/contracts/quantifiers-forall-requires-enforce/test.desc b/regression/contracts/quantifiers-forall-requires-enforce/test.desc deleted file mode 100644 index 23f9c2209e1..00000000000 --- a/regression/contracts/quantifiers-forall-requires-enforce/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---enforce-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_forall -within negative contexts (enforced REQUIRES clauses). - -With the SAT backend universal quantifiers within a negative context, -e.g., the REQUIRES clause being enforced in this case, -are supported only if the quantifier is bound to a constant range. diff --git a/regression/contracts/quantifiers-forall-requires-replace/main.c b/regression/contracts/quantifiers-forall-requires-replace/main.c deleted file mode 100644 index 6c086f98719..00000000000 --- a/regression/contracts/quantifiers-forall-requires-replace/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include - -#define MAX_LEN 16 - -// clang-format off -int f1(int *arr, int len) - __CPROVER_requires(__CPROVER_forall { - int i; - // test replacement with symbolic bound - (0 <= i && i < len) ==> arr[i] == i - }) - __CPROVER_ensures( - __CPROVER_return_value == 0 - ) -// clang-format on -{ - return 0; -} - -int main() -{ - int len; - __CPROVER_assume(0 <= len && len <= MAX_LEN); - - int *arr = malloc(len * sizeof(int)); - for(int i = 0; i < MAX_LEN; ++i) - { - if(i < len) - arr[i] = i; - } - - f1(arr, len); -} diff --git a/regression/contracts/quantifiers-forall-requires-replace/test.desc b/regression/contracts/quantifiers-forall-requires-replace/test.desc deleted file mode 100644 index 0e30dbce664..00000000000 --- a/regression/contracts/quantifiers-forall-requires-replace/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---replace-call-with-contract f1 -^EXIT=0$ -^SIGNAL=0$ -^\[f1.precondition.\d+\] line \d+ Check requires clause of f1 in main: SUCCESS$ -^VERIFICATION SUCCESSFUL$ --- -^warning: ignoring --- -The purpose of this test is to ensure that we can safely use __CPROVER_forall -within positive contexts (replaced REQUIRES clauses). - -This is fully supported (without requiring full unrolling) with the SAT backend. \ No newline at end of file diff --git a/regression/contracts/replace-nondet-return-value/main.c b/regression/contracts/replace-nondet-return-value/main.c deleted file mode 100644 index 9b2d3684cfa..00000000000 --- a/regression/contracts/replace-nondet-return-value/main.c +++ /dev/null @@ -1,23 +0,0 @@ -int cmp(int i1, int i2) - // clang-format off - __CPROVER_ensures((i1 == i2) ==> (__CPROVER_return_value == 0)) - __CPROVER_ensures((i1 != i2) ==> (__CPROVER_return_value == -1)) -// clang-format on -{ - if(i1 == i2) - return 0; - else - return -1; -} - -int main() -{ - int ret = -1; - ret = cmp(0, 0); - __CPROVER_assert(ret == 0, "expecting SUCCESS"); - ret = cmp(0, 1); - __CPROVER_assert(ret == 0, "expecting FAILURE"); - __CPROVER_assert(ret == -1, "expecting SUCCESS"); - __CPROVER_assert(0, "expecting FAILURE"); - return 0; -} diff --git a/regression/contracts/replace-nondet-return-value/test.desc b/regression/contracts/replace-nondet-return-value/test.desc deleted file mode 100644 index d49794446bd..00000000000 --- a/regression/contracts/replace-nondet-return-value/test.desc +++ /dev/null @@ -1,20 +0,0 @@ -CORE -main.c ---replace-call-with-contract cmp -^EXIT=10$ -^SIGNAL=0$ -^\[main\.assertion\.1\] line \d+ expecting SUCCESS: SUCCESS$ -^\[main\.assertion\.2\] line \d+ expecting FAILURE: FAILURE$ -^\[main\.assertion\.3\] line \d+ expecting SUCCESS: SUCCESS$ -^\[main\.assertion\.4\] line \d+ expecting FAILURE: FAILURE$ -^\*\* 2 of 4 failed -^VERIFICATION FAILED$ --- --- -This test checks that the return value of a replaced function call is made -nondet at each replacement site. -The replaced function is called twice. Each call is expected to have a different -return value. If the return value of the call is not made nondet at each -replacement, it would be subject to contradictory constraints -(from the post conditions) and the assertions expected to fail would -be vacuously satisfied. diff --git a/regression/contracts/test_aliasing_replace/main.c b/regression/contracts/test_aliasing_replace/main.c deleted file mode 100644 index f77721d1a2a..00000000000 --- a/regression/contracts/test_aliasing_replace/main.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include - -int z; - -// clang-format off -int foo(int *x, int *y) - __CPROVER_assigns(z, *x, *y) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(int)) && - __CPROVER_is_fresh(y, sizeof(int)) && - *x > 0 - && *x <= 4) - __CPROVER_ensures( - x != NULL && - y != NULL && - x != y && - __CPROVER_return_value == *x + 5) -// clang-format on -{ - *x = *x + 4; - return (*x + 5); -} - -int main() -{ - int n = 4; - n = foo(&n, &n); - assert(!(n < 4)); - return 0; -} diff --git a/regression/contracts/test_aliasing_replace/test.desc b/regression/contracts/test_aliasing_replace/test.desc deleted file mode 100644 index 35abd437b1e..00000000000 --- a/regression/contracts/test_aliasing_replace/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^EXIT=10$ -^SIGNAL=0$ -\[foo.precondition.\d+\] line \d+ Check requires clause of foo in main: FAILURE -\[main.assertion.\d+\] line \d+ assertion \!\(n \< 4\): SUCCESS -^VERIFICATION FAILED$ --- --- -Checks whether asserting __CPROVER_is_fresh will guarantee that objects -mapped to distinct objetcs. diff --git a/regression/contracts/test_array_memory_enforce/main.c b/regression/contracts/test_array_memory_enforce/main.c deleted file mode 100644 index e72cae1a7f9..00000000000 --- a/regression/contracts/test_array_memory_enforce/main.c +++ /dev/null @@ -1,41 +0,0 @@ -#include - -bool ptr_ok(int *x) -{ - return (*x < 5); -} - -bool return_ok(int ret_value, int *x) -{ - int a; - a = *x; - return (ret_value == *x + 5); -} - -// clang-format off -int foo(int *x) - __CPROVER_assigns(__CPROVER_object_whole(x)) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(int) * 10) && - x[0] > 0 && - ptr_ok(x)) - __CPROVER_ensures( - !ptr_ok(x) && - !__CPROVER_is_fresh(x, sizeof(int) * 10) && /* `x` is not fresh anymore. */ - x[9] == 113 && - return_ok(__CPROVER_return_value, x)) -// clang-format on -{ - *x = *x + 4; - x[5] = 12; - x[9] = 113; - int y = *x + 5; - return *x + 5; -} - -int main() -{ - int *n; - int o = foo(n); - return 0; -} diff --git a/regression/contracts/test_array_memory_enforce/test.desc b/regression/contracts/test_array_memory_enforce/test.desc deleted file mode 100644 index 6dd73084d7d..00000000000 --- a/regression/contracts/test_array_memory_enforce/test.desc +++ /dev/null @@ -1,16 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that x\[\(.* int\)5\] is assignable: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that x\[\(.* int\)9\] is assignable: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether __CPROVER_is_fresh behaves correctly for arrays both in -requires and ensures clauses. In the ensures clause, the __CPROVER_is_fresh -is unnecessary. By negating the predicate in the ensures clause, the test -proves that `x` is not fresh at end of the function. diff --git a/regression/contracts/test_possibly_aliased_arguments/main.c b/regression/contracts/test_possibly_aliased_arguments/main.c deleted file mode 100644 index 6f168a148d9..00000000000 --- a/regression/contracts/test_possibly_aliased_arguments/main.c +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include - -// When enforced, this contract should pass - -// clang-format off -bool sub_ptr_values(int *x, int *y) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(int)) && - (y == x || __CPROVER_is_fresh(y, sizeof(int))) - ) - __CPROVER_ensures( - __CPROVER_return_value == (*x - *y) - ) -// clang-format on -{ - return (*x - *y); -} - -// A function that uses `sub_ptr_values` -void main() -{ - int *n = malloc(sizeof(int)); - int diff = sub_ptr_values(n, n); -} diff --git a/regression/contracts/test_possibly_aliased_arguments/test.desc b/regression/contracts/test_possibly_aliased_arguments/test.desc deleted file mode 100644 index 1f58c5f1fed..00000000000 --- a/regression/contracts/test_possibly_aliased_arguments/test.desc +++ /dev/null @@ -1,11 +0,0 @@ -CORE -main.c ---replace-call-with-contract sub_ptr_values -^EXIT=0$ -^SIGNAL=0$ -\[sub_ptr_values.precondition.\d+\] line \d+ Check requires clause of sub\_ptr\_values in main: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether __CPROVER_is_fresh can be used conditionally, -in order to allow possibly-aliased arguments. diff --git a/regression/contracts/test_scalar_memory_enforce/main.c b/regression/contracts/test_scalar_memory_enforce/main.c deleted file mode 100644 index b22c93fe00f..00000000000 --- a/regression/contracts/test_scalar_memory_enforce/main.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -bool ptr_ok(int *x) -{ - return (*x < 5); -} - -bool return_ok(int ret_value, int *x) -{ - int a = *x; - return (ret_value == (*x + 5)); -} - -// clang-format off -int foo(int *x) - __CPROVER_assigns(*x) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(int)) && - *x > 0 && - ptr_ok(x)) - __CPROVER_ensures( - !ptr_ok(x) && - !__CPROVER_is_fresh(x, sizeof(int)) && - return_ok(__CPROVER_return_value, x)) -// clang-format on -{ - *x = *x + 4; - return (*x + 5); -} - -int main() -{ - int *n; - int o = foo(n); - return 0; -} diff --git a/regression/contracts/test_scalar_memory_enforce/test.desc b/regression/contracts/test_scalar_memory_enforce/test.desc deleted file mode 100644 index f32b3905b98..00000000000 --- a/regression/contracts/test_scalar_memory_enforce/test.desc +++ /dev/null @@ -1,12 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that \*x is assignable: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether __CPROVER_is_fresh works properly for scalars (enforce context). -It tests both positive and negative cases for __CPROVER_is_fresh. diff --git a/regression/contracts/test_struct_enforce/main.c b/regression/contracts/test_struct_enforce/main.c deleted file mode 100644 index 7ea407d7af0..00000000000 --- a/regression/contracts/test_struct_enforce/main.c +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include - -struct bar -{ - int baz; - unsigned int qux; -}; - -// clang-format off -int foo(struct bar *x) - __CPROVER_assigns(*x) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(struct bar))) - __CPROVER_ensures( - __CPROVER_return_value == (x->baz + x->qux)) -// clang-format on -{ - x->baz = 5; - x->qux = 5; - return (x->baz + x->qux); -} - -int main() -{ - struct bar *x; - int rval = foo(x); - assert(rval == 10); - return 0; -} diff --git a/regression/contracts/test_struct_enforce/test.desc b/regression/contracts/test_struct_enforce/test.desc deleted file mode 100644 index b2b0799d18e..00000000000 --- a/regression/contracts/test_struct_enforce/test.desc +++ /dev/null @@ -1,14 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that x->baz is assignable: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that x->qux is assignable: SUCCESS -\[main.assertion.\d+\] line \d+ assertion rval \=\= 10: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether assuming __CPROVER_is_fresh will guarantee a new freshly -allocated pointer (no aliasing) for structs. diff --git a/regression/contracts/test_struct_member_enforce/main.c b/regression/contracts/test_struct_member_enforce/main.c deleted file mode 100644 index 1133ef091cd..00000000000 --- a/regression/contracts/test_struct_member_enforce/main.c +++ /dev/null @@ -1,30 +0,0 @@ -#include - -struct string -{ - int len; - char *str; -}; - -// clang-format off -int foo(struct string *x) - __CPROVER_assigns(x->str[x->len-1]) - __CPROVER_requires( - x->len == 128 && - __CPROVER_is_fresh(x->str, x->len * sizeof(char))) - __CPROVER_ensures( - __CPROVER_return_value == 128 && - x->str[x->len - 1] == '\0') -// clang-format on -{ - x->str[x->len - 1] = '\0'; - return x->len; -} - -int main() -{ - struct string x; - int rval = foo(&x); - assert(rval == 128); - return 0; -} diff --git a/regression/contracts/test_struct_member_enforce/test.desc b/regression/contracts/test_struct_member_enforce/test.desc deleted file mode 100644 index 82c4b78f740..00000000000 --- a/regression/contracts/test_struct_member_enforce/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---enforce-contract foo -^EXIT=0$ -^SIGNAL=0$ -\[foo.postcondition.\d+\] line \d+ Check ensures clause: SUCCESS -\[foo.assigns.\d+\] line \d+ Check that x->str\[\(.*\)\(x->len - 1\)\] is assignable: SUCCESS -\[main.assertion.\d+\] line \d+ assertion rval \=\= 128: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether assuming __CPROVER_is_fresh will guarantee a new freshly -allocated pointer (no aliasing) for struct members. diff --git a/regression/contracts/test_struct_replace/main.c b/regression/contracts/test_struct_replace/main.c deleted file mode 100644 index b5e1a50df1a..00000000000 --- a/regression/contracts/test_struct_replace/main.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include - -struct bar -{ - int baz; - unsigned int qux; -}; - -// clang-format off -int foo(struct bar *x, struct bar *y) - __CPROVER_assigns(*x, *y) - __CPROVER_requires( - __CPROVER_is_fresh(x, sizeof(struct bar)) && - __CPROVER_is_fresh(y, sizeof(struct bar))) - __CPROVER_ensures( - __CPROVER_return_value == (x->baz + x->qux) && - *x == *y) -// clang-format on -{ - x->baz = 5; - x->qux = 5; - *y = *x; - return (x->baz + x->qux); -} - -int main() -{ - struct bar *x = malloc(sizeof(*x)); - struct bar *y = malloc(sizeof(*y)); - int rval = foo(x, y); - assert(rval == x->baz + x->qux); - assert(*x == *y); - return 0; -} diff --git a/regression/contracts/test_struct_replace/test.desc b/regression/contracts/test_struct_replace/test.desc deleted file mode 100644 index 974dbfac58e..00000000000 --- a/regression/contracts/test_struct_replace/test.desc +++ /dev/null @@ -1,13 +0,0 @@ -CORE -main.c ---replace-call-with-contract foo -^EXIT=0$ -^SIGNAL=0$ -\[foo.precondition.\d+\] line \d+ Check requires clause of foo in main: SUCCESS -\[main.assertion.\d+\] line \d+ assertion rval \=\= x->baz \+ x->qux: SUCCESS -\[main.assertion.\d+\] line \d+ assertion \*x \=\= \*y: SUCCESS -^VERIFICATION SUCCESSFUL$ --- --- -Checks whether asserting __CPROVER_is_fresh will guarantee that objects -mapped to distinct objetcs (for structs).