You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using drreg outside of the insertion phase, it defaults to a forward scan of the ilist to determine register liveness. At the beginning of the function drreg_forward_analysis, it flat-rate sets ever_spilled to false for each register. So if you call drreg_reserve_register() more than once, the ever_spilled of the first is false again. As a consequence, registers except the one of the last call of drreg_reserve_register() are never restored.
The text was updated successfully, but these errors were encountered:
Using it in other phases is explicitly allowed (xref http://dynamorio.org/docs/page_drreg.html), except no optimization will be performed. For example the drreg-test has an example in instru2instru. I am not sure why instru2instru is important, but for example I currently need it for app2app, for an emulation sequence.
Re-setting the spilled flag causes earlier recorded registers's spill flag to reset. Those
registers will then not restore. Resetting the spilled flag is not needed as it will be
set in drreg_reserve_reg_internal().
Fixes#3821
…3822)
Re-setting the spilled flag causes earlier recorded registers's spill flag to reset. Those
registers will then not restore. A latent issue was filed with respect to resetting ever_spilled,
xref #3827.
A test was added to drreg-test that exposes the bug.
Fixes#3821
When using drreg outside of the insertion phase, it defaults to a forward scan of the ilist to determine register liveness. At the beginning of the function drreg_forward_analysis, it flat-rate sets ever_spilled to false for each register. So if you call drreg_reserve_register() more than once, the ever_spilled of the first is false again. As a consequence, registers except the one of the last call of drreg_reserve_register() are never restored.
The text was updated successfully, but these errors were encountered: