-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement ghost state in all language backends #1929
Comments
I've included a pointer to #1929 as well to indicate our intention to support ghost state on other language backends.
I'm not sure if it's straightforward to have a general-purpose
Presumably, a generic
Where In light of this, I think we should implement a combination of (1) and (2). That is, add a generic |
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now deprecated in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
Still TODO: * Once the MIR backend supports overrides, the MIR backend needs to call the `executeGhost` function from `executeCond`, similarly to how the LLVM and JVM backends do currently. * Add a MIR test case demonstrating that it works. Fixes #1929.
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now deprecated in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
This patch: * Factors out the machinery needed to track ghost state into into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now deprecated in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
This patch: * Factors out the machinery needed to track ghost state into into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now a legacy command whose use is discouraged in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
This patch: * Factors out the machinery needed to track ghost state into into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now a legacy command whose use is discouraged in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
This patch: * Factors out the machinery needed to track ghost state into into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
This patch: * Factors out the machinery needed to track ghost state into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
We want to be able to declare ghost state in all SAW language backends, so we now use a more general `declare_ghost_state` name for the command to reflect this. The old `llvm_declare_ghost_state` command is now a legacy command whose use is discouraged in favor of `declare_ghost_state`. This is one part of an eventual fix for #1929.
This patch: * Factors out the machinery needed to track ghost state into the `SAWScript.Crucible.Common.Override` and `SAWScript.Builtins` modules. Nothing about ghost state is specific to any language backend, so it deserves to live in a non-LLVM–specific location. * Adds `jvm_ghost_value` and `mir_ghost_value` commands, which behave exactly like the LLVM backend's `llvm_ghost_value` command does, but for the JVM and MIR backends, respectively. * Adds a `test_mir_ghost` test case in SAWScript and the remote API to ensure that everything works as expected. Fixes #1929.
SAW's has a ghost state feature that is conceptually independent of any particular language backend. At the moment, however, ghost state is only implemented on the LLVM backend via the
llvm_declare_ghost_state
andllvm_ghost_value
commands. This issue tracks implementing support for ghost state in the JVM and MIR backends as well.Two possible ways of going about this are:
{jvm,mir}_declare_ghost_state
and{jvm,mir}_ghost_state
counterparts to the existingllvm_declare_ghost_state
andllvm_ghost_value
commands.declare_ghost_state
andghost_value
commands, and makellvm_declare_ghost_state
andllvm_ghost_value
deprecated aliases for them.I'm more inclined to do (2), as nothing in the types of the
llvm_declare_ghost_state
orllvm_ghost_value
commands is specific to LLVM.The text was updated successfully, but these errors were encountered: