https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118465
Paolo Bonzini <bonzini at gnu dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|INVALID |---
Status|RESOLVED |UNCONFIRMED
--- Comment #3 from Paolo Bonzini <bonzini at gnu dot org> ---
> %rbx is callee-saved register (so, preserved across function calls).
>
> These push/pop instructions are there to implement the above requirement.
Yes, it is.
The point is to understand why interprocedural RA chooses to use a callee-saved
register:
- it could be because the push/pop is needed anyway to align the stack, as the
reporter suggests, and then the question is whether the alignment is needed
- it could be for other reasons, for example to use the high-byte register %bh,
and in this case the question is whether this is indeed necessary or a missed
optimization in IPA RA.