mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-11-29 11:02:13 +03:00
2c85dce18e
This change makes the block classifier heuristic part of the `ArchitectureInfo` structure. This enables clients and architecture backends to customize the block classification heuristics. This is most useful for architectures that have complex architecture-specific block terminators that require analysis to generate (e.g., conditional returns). It will also make macaw-refinement simpler in the future, as the SMT-based refinement is just an additional block classifier (but is currently implemented via a hacky side channel). This change introduces an ancillary change, which should not be very user-visible. It splits the Macaw.Discovery and Macaw.Discovery.State modules to break module import cycles in a way that enables us to expose the classifier. This should not be user-visible, as Macaw.Discovery still exports the same names (with one minor exception that should not appear in user code). It also moves the definition of the `ArchBlockPrecond` type family; the few affected places should be updated. User code should probably not be able to see this. |
||
---|---|---|
.. | ||
src/Data/Macaw | ||
support | ||
tests | ||
x86_tests | ||
.gitignore | ||
LICENSE | ||
macaw-x86.cabal |