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
Analyzing the code, I'd like to draw attention to this check:
if self.is_read(dst.register, instr_form) and not (
dst.get("pre_indexed", False) or dst.get("post_indexed", False)
):
yield instr_form, []
I'm not sure if I understand the need for the checks on "pre_indexed" and "post_indexed" there. I tried removing these conditions, i.e. rewriting the code to this:
if self.is_read(dst.register, instr_form):
yield instr_form, []
This appears to fix the issue. This is the new dependency graph for the first code snippet in the initial bug report (just post-indexed ldr followed by str):
However, given that I don't understand why the condition is there, I have no idea if this breaks something else.
Consider this non-sensical, but minimal, sequence of instructions:
This is the dependency graph generated by OSACA:
I would expect a dependency from
ldr
tostr
due to the update ofx1
.Note that replacing the code above by an explicit addition of 8 to
x1
generates a dependency from the addition to the store, just as I would expect:Dependency graph:
Unless I misunderstood how these dependency graphs are supposed to work, I believe that's a bug.
The text was updated successfully, but these errors were encountered: