PPCAnalyst: Don't treat blr as writing to CR #10284
Merged
+0
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
This piece of code is rather hard to understand, but my best guess at what it's trying to do is that it tries to create opportunities to skip writing CRs back to ppcState if we know that there are no CR instructions (or branch instructions, etc) between an instruction that writes to a CR register and the next blr. This is technically inaccurate emulation, but as long as games don't do anything too weird with their ABIs, I suppose it doesn't break anything.
So why do I want to get rid of it? Well, other than breaking some hypothetical weird game, I imagine it could trip up people trying to debug a game who are looking at the CR contents. And the code is just plain confusing. (blr clearly doesn't write to CRs!)