-
-
Notifications
You must be signed in to change notification settings - Fork 878
fix[venom]: load elimination improvements #4807
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
base: master
Are you sure you want to change the base?
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4807 +/- ##
==========================================
+ Coverage 93.28% 93.32% +0.04%
==========================================
Files 148 148
Lines 20561 20557 -4
Branches 3570 3567 -3
==========================================
+ Hits 19180 19185 +5
+ Misses 924 919 -5
+ Partials 457 453 -4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| ops.extend([pred.label, val]) | ||
|
|
||
| assert len(ops) == 2 * len(existing_value), (ops, existing_value, inst) | ||
| if len(ops) != 2 * len(existing_value): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why this has to be the if and not assert. All the cases should be already short circuited in the for beforehand.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see f6c4304
Co-authored-by: HodanPlodky <[email protected]>
- Fix phi operand count check: use len(preds) instead of len(existing_value) to handle cases where multiple predecessors store the same value - Add _normalize_operand to ensure consistent lattice keys for aliased pointers - Remove dead code (memloc is None check, store_opcode is not None) - Restore assertions for impossible states (analysis bugs) while keeping legitimate bail-outs as returns - Add tests for nested diamonds, multi-predecessor phi, and aliased pointers Co-Authored-By: Claude Opus 4.5 <[email protected]>
charles-cooper
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approved, waiting for any more feedback from @HodanPlodky
Put `param` instructions first in entry blocks for tests that use the hevm harness. `venom_to_assembly.py:_prepare_stack_for_function` breaks on the first non-param instruction, so params must come before other instructions for stack setup to work correctly. Also remove `hevm=False` from tests that were previously disabled due to this issue. Co-Authored-By: Claude Opus 4.5 <[email protected]>
All `param` instructions must be contiguous at the start of entry block. The `%alias = %ptr` assignment was between two params, breaking stack setup. Co-Authored-By: Claude Opus 4.5 <[email protected]>
What I did
How I did it
How to verify it
Commit message
Description for the changelog
Cute Animal Picture