Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34.3k
Description
We can't just combinepatch_aarch64_21r andpatch_aarch64_12 into one relaxed relocation without a deeper understanding of the control flow, unfortunately. The issue is that the code can can jump into the middle of the two instructions involved in the relocation, and the combined relaxation changes the meaning of that.
This happens with_IS_NONE on debug 3.13 builds for AArch64 Linux, so it's a legitimate concern. We just dodged the bullet because_IS_NONE is never actually emitted (we turn it into a guard).
I think the best course of action is to remove thepatch_aarch64_33rx from3.13,3.14, andmain. Something like this probably belongs in the textual assembly optimization pass, since we actually reason about control flow there.
I'll open the PRs to remove the bug first. If somebody (perhaps from Arm@diegorusso@markshannon?) can prove this relaxation is valuable and wants to add it back onmain in that earlier pass, then feel free to do so.