RFR: 8282231: x86-32: runtime call to SharedRuntime::ldiv corrupts registers
Andrew Haley
aph at openjdk.java.net
Tue Feb 22 14:26:57 UTC 2022
On Tue, 22 Feb 2022 13:34:03 GMT, Andrew Haley <aph at openjdk.org> wrote:
> In x86_32.ad, a call to SharedRuntime::ldiv doesn't save all of the call-clobbered registers. Also SharedRuntime::lrem.
> effect(CALL) is the simplest way to fix this, and AFAIK the most efficient too.
>
> This is by no means the only bug in this area, but it's trivial to fix and allows a bootcycle build to complete on recent Linuxes.
> Yeah, I did a similar thing here: #7498 -- I think we can drop `cr`, `cx`, `bx` from match rule arguments too. Also drop spaces between parentheses, while we are at it. That change passed tier{1,2,3} on x86_32, I am sure this one passes it too.
Yes, we seem to have collided. Suggest we go ahead with this one, OK? I've put you in as a co-author, so I guess someone else will have to review it.
`cr`, `cx`, and `bx` are call-clobbered, so we don't need them as an effect, I believe.
-------------
PR: https://git.openjdk.java.net/jdk/pull/7575
More information about the hotspot-compiler-dev
mailing list