-
Notifications
You must be signed in to change notification settings - Fork 2
Revamp atomic region inference pass to support the latest LLVM and fix/refactor code #1
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
…tor code Below are the key changes: - Use LLVM's new pass manager, a major improvement from the legacy one. - Fix a shortcoming of the inference algorithm to actually collect all uses of a fresh/consistent variable. - Optimize the inference cleanup algorithm to remove all instructions associated with the arguments of fresh/consistent annotations. - Thoroughly log debug messages throughout the components of the pass for a clearer view of the process. - Rename files, structs, functions, variables, etc. to be more descriptive and consistent. - General code style refactoring (e.g., use `auto` and structured bindings (destructuring) where possible). - Added simple C tests to `benchmarks/ctests`.
|
My original intention was to merge into a separate branch ( @msurbatovich May I ask if I could be given some access rights? Otherwise, could you please help create a |
| #endif | ||
| v.emplace(inst); | ||
|
|
||
| //* Actually collect all uses (e.g., log(x)) |
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.
Bullet 2.
| I->replaceAllUsesWith(UndefValue::get(I->getType())); | ||
| I = I->eraseFromParent(); | ||
|
|
||
| //* Remove args and their uses as well |
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.
Bullet 3.
Useful extensible shortcuts to running tests.
Step 1 of optimizing atomic regions for (smaller) size.
Below are the key changes:
autoand structured bindings (destructuring) where possible).benchmarks/ctests.