Skip to content
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

Always create the destination branch argument for the sentinel value when looking for the value definition in the predecessors #58

Closed

Conversation

greenhat
Copy link
Contributor

@greenhat greenhat commented Nov 7, 2023

Close #51

Close #40 since the only use case for emit_zero at the start of the block was in the code removed by this PR.

This PR is ready for review but is built on top and is intended to be merged after #49.

This removes the remnants of the previously removed ValueData::Alias variant. It does not matter if we find the definition in the predecessors since we cannot swap all sentinel value uses with it. So, this fix always makes the sentinel value into a block argument.

This commit refactors the structure of the emulator so that it can be
used more easily as the engine for an interactive debugger for MASM
code.

* Emulator is now structured such that it can be run step by step, each
  step producing an event of some kind depending on what occurred during
  that step and what, if any, breakpoints are present.
* Added support for more emulator events
* Breakpoints previously implemented to handle stepping through code
  have been removed in favor of APIs on the emulator itself for that
  purpose.
* Support for multiple breakpoints at once was implemented
* Support for watchpoints (i.e. monitoring changes to memory) was
  implemented
* Additional debug information is now provided upon request
@bitwalker
Copy link
Contributor

Once the conflict is resolved, we can get this merged

Denys Zadorozhnyi and others added 15 commits November 16, 2023 10:27
The idea for `CompTest` is to mix and match sources (Rust, Wasm, IR)
and expected compiler output (IR, MASM) to test the whole
pipeline(Rust->Wasm->IR->MASM) or any part of it (Rust->IR, Wasm->IR, IR->MASM, etc).

The compiled MASM code is executed on the emulator and VM and the results
are compared with the native Rust code. The inputs are generated via `proptest`.
The Rust source code consists of the target function under test and an
app binary that calls the target function. The app binary is compiled
to Wasm and then to IR. The target function is called directly in the
test from the linked crate.
…results;

Wasm frontend tests are converted to use integration tests infrastructure.
Fixes `i64.extend_u32` by adding casts to u32 and back to i64.
…rates, one for Wasm and one for calls in tests
…neBlocks)

when producing IR for the integration tests.
…alue

when looking for the value definition in the predecessors. #51

This removes the remnants of the previously removed `ValueData::Alias` variant.
It does not matter if we find the definition in the predecessors since we cannot
swap all sentinel value uses with it. So this fix always makes the sentinel value into a
block argument.
@bitwalker
Copy link
Contributor

Something got messed up here, probably due to merging #37, but GitHub thinks this branch contains commits that are now in main (just with different commit hashes). If you want, just cherry-pick your commits from this branch on the #49 branch, and close this PR, and then you can just merge #49 with everything, since both PRs are approved and you were going to merge this into that one anyway.

@greenhat
Copy link
Contributor Author

I'd rather avoid messing with #49, so I made a new #66 in place of this one.

@greenhat greenhat closed this Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants