-
Notifications
You must be signed in to change notification settings - Fork 170
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
WIP: Use LHS components as synthesis components #327
base: main
Are you sure you want to change the base?
Conversation
So there's good news and bad news. 👍 The good news is that everyone that needs to sign a CLA (the pull request submitter and all commit authors) have done so. Everything is all good there. 😕 The bad news is that it appears that one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that here in the pull request. Note to project maintainer: This is a terminal state, meaning the |
CLAs look good, thanks! |
why does stupid googlebot keep complaining |
this is awesome! I have a long drive home tomorrow and will try this out / write tests when I get there |
@regehr The googlebot complaint is valid, I initially started with a merge from your branch, then squashed leaving you as a committer. I change it to me, looks good now. |
- synthesis should no longer get var, const, untyped const - synthesis now gets all widths, not just matching
This WIP PR adds a parameter to instruction synthesis corresponding to a vector of instructions from the LHS that can be used as components in synthesis. The instructions are initialized as ordinary library components and are reconstructed if a candidate is found.
The first test case
test/Infer/four-adds.opt
shows that the synthesis engine can reconstruct the original LHS out of two sub-components (twoadd
s). Feel free to add more reasonable tests.Usage: LHS components are always initialized. You might want to specify additional components/constants manually using
-souper-synthesis-comps=...
. Otherwise, the whole component library will be initialized as well (slow).You will probably encounter issues, please provide me test cases, thanks!