Properties in inline functions used to be ignored
because we ran partial_inline to inline them.
Since we are not doing that anymore, properties
in inline functions have been ignored without this fix.
Inline functions are handled as any other functions now
Specifically: symex_step always dispatches without running either clean_expr or renaming, symex_step
always takes care of the if-unreachable case (usually means skip instruction, but end-of-function has
work to do regardless), symex_step takes care of advancing to the successor instruction after a simple
instruction executes.
No behavioural changes intended here except avoiding a little bit of redundant renaming / simplification
when functions other than symex_step call symex_assume or vcc.
Which is cheaper: simplifying a large guard, or checking that goto_state_map
doesn't contain any incoming entries for the instructions between this one and
the jump target? My theory: the latter.
As local_safe_pointerst no longer needs a namespace we can do a partial revert
of 959c7a5f7f (Bugfix: Maintain safe_pointers per-path). On SV-COMP's
ReachSafety-ECA, copying safe_pointers accounted for 14% of the time spent in
goto_symext::symex_goto (715 of 5119 seconds).
There are no in-tree uses of this function. External users should use
link_to_library(goto_model, ...). This is in preparation of further changes that
will only support the goto_modelt-variant.
The implementation will make a copy of the argument anyway.
This makes it explicit in the type and allow the use of move by the
caller which avoids a copy.
This commit fixes failure-to-build on systems where the path to the
compiler contains spaces. This is common on Microsoft Windows, where the
compiler lives somewhere under `C:\Program Files`. Prior to this commit,
src/ansi-c/library_check.sh would try to execute `C:\Program` and fail.
src/ansi-c/library_check.sh does not work under MSVC, as that compiler
uses completely different flags. This commit removes the file generated
by that script---library-check.stamp---from the dependency graph under
cmake.
This commit fixes#4295.
This branch is not taken by symex but it is taken by the slicer. The code
I've removed has no effect, as far as I can tell, and may have been left
over from an old implementation from before the beginning of the git
history.
Note, there is a commit that splits ID_dynamic_object into two different
ids. See #2646 and #3769 for more details.
These are left overs that had been missed in prior migration to tag types.
Technically these are bug fixes, but it seems we do not have tests for these
code paths.