You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit da5bbe4
Browse filesBrowse the repository at this point in the historyBrowse files
An ASSUME false has no successors in the control-flow graph, so no
instruction is control dependent on it. The full slicer therefore removed
it unless it was the slicing criterion, which made the instructions that
follow it reachable on paths that it blocked, resulting in spurious
counterexamples. For example, each failing Java assertion is encoded as
ASSERT false followed by ASSUME false, so that with --full-slice any
later assertion was reported as failing with the values that violate the
first one. Loops unwound by goto-instrument --unwind (without unwinding
assertions) and function bodies generated with
--generate-function-body-options assume-false end paths the same way; in
the latter case the slicer removed the call of the function.
Always retain ASSUME false instructions. Their control dependencies, and
the calls of the function that contains them, are then retained as well.
On jbmc/regression/jbmc-strings with --full-slice this fixes 6 tests and
does not cause any new failures.
Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
0 commit comments