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.