Commit Graph

17849 Commits

Author SHA1 Message Date
Peter Schrammel ffd6d3823e Consider properties of inline functions
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
2019-03-03 20:46:54 +00:00
Michael Tautschnig 95e15fdbc2
Merge pull request #4251 from tautschnig/parameter-identifiers-locals
Local bitvector analysis: use parameter_identifiers [blocks: #4167]
2019-03-02 10:32:58 +00:00
Michael Tautschnig 17623d171c
Merge pull request #4099 from NathanJPhillips/documentation/symex
Symex Documentation
2019-03-02 09:29:01 +00:00
Michael Tautschnig a35d547cc8
Merge pull request #2511 from polgreen/fix_trace_wording
Change "violated assumption" to "assumption" in trace
2019-03-02 09:10:01 +00:00
Michael Tautschnig 419382999b Local bitvector analysis: use parameter_identifiers
goto_functiont::type will go away.
2019-03-02 08:41:03 +00:00
Nathan Phillips c2f5c9b4e5 Improve documentation for goto_symext 2019-03-02 08:23:00 +00:00
Nathan Phillips 0e65eb854a Added code documentation 2019-03-02 08:13:48 +00:00
Nathan Phillips aead710ddd Documentation formatting 2019-03-02 08:13:48 +00:00
Nathan Phillips e2c7ae7c02 Moved parameters to match header file 2019-03-02 08:13:48 +00:00
Polgreen 8c1ffc9f55 make assumption output in trace reachable
Assumptions are never violated, instead they restrict the search space for non-det values
2019-03-02 07:47:54 +00:00
Polgreen c2b5ee28d8 Change "violated assumption" to "assumption" in trace
Assumptions aren't violated, they are adhered to
2019-03-02 07:25:31 +00:00
Michael Tautschnig 2ee5a33d37
Merge pull request #2504 from polgreen/docker_file_for_xen
Compiling Xen with CBMC: docker file "expensive regression test"
2019-03-02 06:41:25 +00:00
Michael Tautschnig fc1df2503a
Merge pull request #4309 from smowton/smowton/cleanup/regularise-symex-dispatch
Regularise the style and division of responsibilities in symex dispatch
2019-03-02 06:22:07 +00:00
Michael Tautschnig b4f65c84e2
Merge pull request #4169 from tautschnig/opt-swap
merge_value_sets: Avoid assignment when actually values can be moved
2019-03-02 06:21:39 +00:00
Michael Tautschnig ee11014382
Merge pull request #4151 from tautschnig/update-after-remove-returns
Update after remove returns
2019-03-02 06:19:43 +00:00
Daniel Kroening d1d0bc2b56 Remove type_eq
With the earlier removal of symbol_type its functionality is exactly the same as
directly using operator== on types.
2019-03-01 19:57:30 +00:00
Michael Tautschnig 9dda74a111
Merge pull request #4308 from allredj/chris_symex_codeowners
CODEOWNERS: Chris Smowton in goto-symex and goto-instrument
2019-03-01 17:32:35 +00:00
Chris Smowton cca1dcab97 Regularise the style and division of responsibilities in symex dispatch
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.
2019-03-01 17:32:28 +00:00
Joel Allred 77a30f0440 CODEOWNERS: C. Smowton in goto-symex and goto-instrument 2019-03-01 14:41:12 +00:00
Michael Tautschnig f5483b2016
Merge pull request #4307 from smowton/smowton/fix/dont-simplify-guard
Don't simplify guard to skip instructions
2019-03-01 14:13:24 +00:00
Chris Smowton 4a3fa3551a Don't simplify guard to skip instructions
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.
2019-03-01 12:11:19 +00:00
Michael Tautschnig fe75b718e8 goto-symex: move safe_pointers to path storage
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).
2019-02-28 19:34:06 +00:00
Michael Tautschnig 7bddbb0e0c Code cleanup in local_safe_pointers
1) Inline (now trivial) comparision function.
2) Use skip_typecast.
2019-02-28 19:34:06 +00:00
Michael Tautschnig efbbfc89b7 Use type equality, not base_type_eq in local safe pointers
We no longer need to resort to tag/symbol type resolution.
2019-02-28 19:34:06 +00:00
Michael Tautschnig 5377c2c4ef
Merge pull request #4301 from romainbrenguier/refactor/simplify_expr_copy
Make simplify_expr take copy instead of reference
2019-02-28 17:40:45 +00:00
Michael Tautschnig f61d33db4e
Merge pull request #4303 from tautschnig/deprecate-link_to_library
Deprecate link_to_library(goto_functions, symbol_table, ...) [blocks: #4296]
2019-02-28 16:47:55 +00:00
Michael Tautschnig ca54005a12
Merge pull request #4264 from diffblue/cleanout-symbol_type
remove symbol_typet [blocks: #4056]
2019-02-28 16:33:02 +00:00
Michael Tautschnig 2a2f98c084 Deprecate link_to_library(goto_functions, symbol_table, ...)
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.
2019-02-28 16:09:23 +00:00
Romain Brenguier 94b2145fdd Move arguments into simplify_expr call
We use std::move in a few places where this is made possible by the
change in interface.
2019-02-28 15:09:02 +00:00
Romain Brenguier 9b5685bd37 Make useless simplify_expr calls have an effect
The return value was ignored and thus there was no use in making these
calls, which was probably a mistake.
2019-02-28 15:08:36 +00:00
Romain Brenguier 173b038edc Make simplify_expr take copy instead of reference
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.
2019-02-28 15:06:45 +00:00
Vojtěch Forejt be4cee2fa9
Merge pull request #4180 from forejtv/forejtv/cover-instrumentations
Extend the options for coverage instrumentation
2019-02-28 15:04:28 +00:00
Chris Smowton 272ba02d94
Merge pull request #4258 from smowton/smowton/fix/java-fake-stubs-parameter-identifiers
Java frontend: treat CProver stubbed methods more like normal stubs
2019-02-28 14:24:10 +00:00
Michael Tautschnig df2b3cabc6
Merge pull request #4299 from karkhaz/kk-msvc-build-fixes
MSVC build fixes
2019-02-28 12:27:16 +00:00
Michael Tautschnig 36a1f488db
Merge pull request #4298 from tautschnig/linking-fix-1
Add missing include file [blocks: #4056]
2019-02-28 12:24:22 +00:00
owen-jones-diffblue 13a8dc82c3
Merge pull request #4290 from owen-jones-diffblue/doc/improve-goto-symex-doc
Improve comment in symex-goto
2019-02-28 11:35:32 +00:00
Kareem Khazem 0bd112c601
Quote $CC in library_check.sh
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.
2019-02-28 11:18:51 +00:00
Kareem Khazem fe6761549b
CMake whitespace fixes
This commit indents CMake directives that got protected by a conditional
in a previous commit.
2019-02-28 11:18:51 +00:00
Kareem Khazem d2933cbd24
Don't run library check under MSVC
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.
2019-02-28 11:18:32 +00:00
Michael Tautschnig 3f2d63379a Add missing include file
We will enable proper type checking when linking library symbols, which
(rightly) fails with a missing include file.
2019-02-28 11:04:18 +00:00
Chris Smowton 863d1997d9
Merge pull request #4291 from owen-jones-diffblue/remove-unused-code
Remove redundant ID_dynamic_object branch in value_set_dereferencet
2019-02-28 10:54:39 +00:00
Fotis Koutoulakis b3cc3e9e31
Merge pull request #4234 from NlightNFotis/non_det_array_goto_harness
Add array initialisation support in default goto-harness.
2019-02-28 10:48:29 +00:00
owen-jones-diffblue a554c530cf
Merge pull request #4292 from owen-jones-diffblue/refactor-fields-of-symex-dereference-statet
Do not store ref to goto_symext in symex_dereference_statet
2019-02-28 10:45:22 +00:00
Owen d57e21bc8b Remove redundant code in ID_dynamic_object branch
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.
2019-02-28 10:05:22 +00:00
Chris Smowton caba5a246a
Merge pull request #4284 from smowton/smowton/admin/benchmark-script-process-groups
Benchmark script: use process groups to manage children
2019-02-28 09:52:50 +00:00
Owen c3ce5b1e93 Make clang-format happy
This code wasn't edited by my commit, but was within the context lines
of the diff, which appears to mean that clang-format cares about it.
2019-02-28 09:52:33 +00:00
Owen 811f91d800 Improve comments in symex-goto 2019-02-28 09:38:30 +00:00
Daniel Kroening 44858f2464 Remove symbol_typet
All front-ends now generate tag types, and tests for ID_symbol_type have become
dead branches/dead code.
2019-02-27 23:43:02 +00:00
Michael Tautschnig 30129ba42c Handle struct/union/enum tag types instead of symbol types
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.
2019-02-27 23:43:01 +00:00
Michael Tautschnig 6dbdd19db4 Fix remaining uses of ID_symbol_type in dump-c
There were still a few left-overs that had not been converted to struct/union
tags.
2019-02-27 23:31:16 +00:00