File tree 5 files changed +28
-9
lines changed 5 files changed +28
-9
lines changed Original file line number Diff line number Diff line change 4
4
^EXIT=10$
5
5
^SIGNAL=0$
6
6
array\.List dynamic object upper bound in p->List\[2\]: FAILURE
7
- \*\* 1 of 14 failed
7
+ \*\* 1 of \d+ failed
8
8
--
9
9
^warning: ignoring
10
10
--
Original file line number Diff line number Diff line change 4
4
^EXIT=10$
5
5
^SIGNAL=0$
6
6
^\[.*\] line 4 shift operand is negative in .*: SUCCESS$
7
+ ^\[.*\] line 5 shift operand is negative in .*: SUCCESS$
7
8
^\[.*\] line 7 shift distance too large in .*: FAILURE$
8
9
^\[.*\] line 15 shift distance is negative in .*: FAILURE$
9
10
^\[.*\] line 15 shift distance too large in .*: SUCCESS$
10
11
^\[.*\] line 20 shift operand is negative in .*: FAILURE$
11
- ^\*\* 3 of 5 failed
12
+ ^\*\* 3 of 6 failed
12
13
^VERIFICATION FAILED$
13
14
--
14
15
^warning: ignoring
Original file line number Diff line number Diff line change
1
+ CORE broken-smt-backend
2
+ main.c
3
+ --pointer-overflow-check --no-simplify
4
+ ^\[main.pointer_arithmetic.\d+\] line 6 pointer arithmetic: pointer outside dynamic object bounds in p \+ \(signed (long (long )?)?int\)10: FAILURE
5
+ ^\[main.pointer_arithmetic.\d+\] line 7 pointer arithmetic: pointer outside dynamic object bounds in p - \(signed (long (long )?)?int\)10: FAILURE
6
+ ^\[main.pointer_arithmetic.\d+\] line 10 pointer arithmetic: pointer outside object bounds in arr \+ \(signed (long (long )?)?int\)10: FAILURE
7
+ ^\[main.pointer_arithmetic.\d+\] line 11 pointer arithmetic: pointer outside object bounds in arr - \(signed (long (long )?)?int\)10: FAILURE
8
+ ^\*\* 4 of \d+ failed
9
+ ^VERIFICATION FAILED$
10
+ ^EXIT=10$
11
+ ^SIGNAL=0$
12
+ --
13
+ ^warning: ignoring
14
+ Invariant check failed
15
+ --
16
+ Uses --no-simplify to avoid removing repeated ASSERT FALSE statements.
Original file line number Diff line number Diff line change 1
- CORE broken-smt-backend
1
+ CORE
2
2
main.c
3
- --pointer-overflow-check --no-simplify
3
+ --pointer-overflow-check
4
4
^\[main.pointer_arithmetic.\d+\] line 6 pointer arithmetic: pointer outside dynamic object bounds in p \+ \(signed (long (long )?)?int\)10: FAILURE
5
5
^\[main.pointer_arithmetic.\d+\] line 7 pointer arithmetic: pointer outside dynamic object bounds in p - \(signed (long (long )?)?int\)10: FAILURE
6
6
^\[main.pointer_arithmetic.\d+\] line 10 pointer arithmetic: pointer outside object bounds in arr \+ \(signed (long (long )?)?int\)10: FAILURE
12
12
--
13
13
^warning: ignoring
14
14
Invariant check failed
15
- --
16
- Uses --no-simplify to avoid removing repeated ASSERT FALSE statements.
Original file line number Diff line number Diff line change @@ -242,7 +242,7 @@ class goto_checkt
242
242
const guardt &guard);
243
243
244
244
goto_programt new_code;
245
- typedef std::set<exprt> assertionst;
245
+ typedef std::set<std::pair< exprt, exprt> > assertionst;
246
246
assertionst assertions;
247
247
248
248
// / Remove all assertions containing the symbol in \p lhs as well as all
@@ -333,8 +333,12 @@ void goto_checkt::invalidate(const exprt &lhs)
333
333
334
334
for (auto it = assertions.begin (); it != assertions.end ();)
335
335
{
336
- if (has_symbol (*it, find_symbols_set) || has_subexpr (*it, ID_dereference))
336
+ if (
337
+ has_symbol (it->second , find_symbols_set) ||
338
+ has_subexpr (it->second , ID_dereference))
339
+ {
337
340
it = assertions.erase (it);
341
+ }
338
342
else
339
343
++it;
340
344
}
@@ -1545,7 +1549,7 @@ void goto_checkt::add_guarded_property(
1545
1549
? std::move (simplified_expr)
1546
1550
: implies_exprt{guard.as_expr (), std::move (simplified_expr)};
1547
1551
1548
- if (assertions.insert (guarded_expr).second )
1552
+ if (assertions.insert (std::make_pair (src_expr, guarded_expr) ).second )
1549
1553
{
1550
1554
auto t = new_code.add (
1551
1555
enable_assert_to_assume ? goto_programt::make_assumption (
You can’t perform that action at this time.
0 commit comments