-
Notifications
You must be signed in to change notification settings - Fork 42
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
Dbg def use #886
Dbg def use #886
Conversation
We now compute sucessor and predecessor blocks and perform def/use analysis for each basic block. This def/use analysis specifically omits values embedded in metadata nodes in order to help us discover which debugging intrinsics need to be specially handled.
CFG is valid. This ensures that all non-metadata uses of virtual registers are proper, i.e., that their def sites dominate all use sites. In addition, track the set of live virtual registers during translation. This allows us to check which metadata values are properly defined as we translate them, in particular, for debugging intrinsics. Since these intrinsics don't necessarily follow the usual rules regarding use/def, it can sometimes happen that metadata values are not properly defined. In such cases we simply omit the ill-formed debugging intrinsic information. Fixes #798
Add comments and other minor tweaks.
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.
This is exciting! I have not read every line thoroughly, but if the example from #778 works, I'm happy.
crucible-llvm/src/Lang/Crucible/LLVM/Translation/Instruction.hs
Outdated
Show resolved
Hide resolved
@@ -219,7 +219,7 @@ translateLLVMModule :: | |||
IO SomeModuleContext' | |||
translateLLVMModule llOpts halloc memVar moduleFilePath llvmMod = | |||
do | |||
Some trans <- | |||
(Some trans, _warns) <- -- TODO? should we do something with these warnings? |
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.
What do you think about this, @langston-barrett? Should uc-crux-llvm
emit warnings discovered during translation?
typos and such Co-authored-by: Ryan Scott <[email protected]>
…form. Refactor slightly how function calls are translated. All code paths would enter their monadic continuation, so pull it back into `generateInstr`.
I've verified locally that the program from #778 now works as expected. When |
This adds a new translation-warnings output to function `translateModule`. Currently the translation warnings are ignored.
This adds a new translation-warnings output to function `translateModule`. Currently the translation warnings are ignored.
This adds a new translation-warnings output to function `translateModule`. Currently the translation warnings are ignored.
No description provided.