Bug 1707774 Comment 12 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

Odds and ends:

Replacing `loop` with `block` has the effect of removing an intermediate Block in the flow graph that contains only a Goto.  In turn this means that v6 is given higher priority than v2 (the value read from the global) during allocation and so no splitting is triggered for v6 to resolve the fact that x0 is busy (for v2) yet needed for v6 (for the result of the function); hence the `block` version succeeds.

FWIW, `loop` has a secondary effect: it introduces an interrupt check.  Not obvious that this matters for anything.
Odds and ends:

Replacing `loop` with `block` has the effect of removing an intermediate Block in the flow graph that contains only a Goto.  In turn this means that v6 is given higher priority than v2 (the value read from the global) during allocation and so no splitting is triggered for v6 to resolve the fact that x0 is busy (for v2) yet needed for v6 (for the result of the function); hence the `block` version succeeds.

Presumably, `loop` ensures that v2 gets higher priority because it is presumed to be used more (because, it's in a loop).

FWIW, `loop` has a secondary effect: it introduces an interrupt check.  Not obvious that this matters for anything.

Back to Bug 1707774 Comment 12