-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Invalidate memory properly with laxLoadsAndStores (#928)
Prior to this change, invalidated memory would always result in an error when read from. This isn't quite the semantics that we would want when `laxLoadsAndStores` is enabled, however, since reading should always result in a symbolic value of some sort. This patch changes the mechanics of `doInvalidate` and `readMemInvalidate` such that when `laxLoadsAndStores` is enabled, the memory is given the appropriate semantics depending on whether `indeterminateLoadBehavior` is `StableSymbolic` or `UnstableSymbolic`. This adds a `?memOpts :: MemOptions` constraint to `doInvalidate`, which is a breaking API change. That being said, the only call site that I am aware of for the `doInvalidate` function is SAW, so the breakage should be relatively minor. Furthermore, there were no test cases for `doInvalidate` before this, so this patch adds some.
- Loading branch information
1 parent
7af47f2
commit c811db8
Showing
4 changed files
with
112 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters