File: test.desc

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (20 lines) | stat: -rw-r--r-- 828 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CORE
main.c
--apply-loop-contracts
^EXIT=10$
^SIGNAL=0$
^\[main.\d+\] .* Check loop invariant before entry: UNKNOWN$
^\[main.assigns.\d+\] .* Check that i is assignable: UNKNOWN$
^\[main.assigns.\d+\] .* Check that b->data\[(.*)i\] is assignable: FAILURE$
^\[main.\d+\] .* Check that loop invariant is preserved: UNKNOWN$
^\[main.assertion.\d+\] .* assertion b->data\[5\] == 0: FAILURE$
^VERIFICATION FAILED$
--
--
This test (taken from #6021) shows the need for assigns clauses on loops.
The alias analysis in this case returns `unknown`,
and so we must manually annotate an assigns clause on the loop.

Note that the annotated assigns clause in this case is an underapproximation,
per the current semantics of the assigns clause -- it must model ALL memory
being assigned to by the loop, not just a single symbolic iteration.