Integrated: 8316566: RISC-V: Zero extended narrow oop passed to Atomic::cmpxchg

Robbin Ehn rehn at openjdk.org
Thu Sep 28 05:50:32 UTC 2023


On Tue, 26 Sep 2023 11:31:58 GMT, Robbin Ehn <rehn at openjdk.org> wrote:

> Hi, please consider!
> 
> There is bug in gcc < 12 where __synch_synchronize() in some corner-cases don't enforce the compiler barrier.
> This causes some code to be placed after the __synch_synchronize(), and in this case causing a word to to be not be sign extended as a collateral issue of the bug.
> You can see the 'bad' assembly in JBS, where a branch is moved over the compiler barrier.
> 
> Trying to get information from gcc folks.
> 
> It seems like either adding a extra compiler barrier, or use  __atomic_thread_fence(__ATOMIC_SEQ_CST) fixes it.
> 
> Tested https://bugs.openjdk.org/browse/JDK-8316186 with this fix.
> Manually verified assembly, with this fix we generate the same as gcc 12.

This pull request has now been integrated.

Changeset: 2d154fcd
Author:    Robbin Ehn <rehn at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/2d154fcd0de0612f58abbc5027f409b9b2eb0dc2
Stats:     1 line in 1 file changed: 0 ins; 0 del; 1 mod

8316566: RISC-V: Zero extended narrow oop passed to Atomic::cmpxchg

Reviewed-by: luhenry, fyang

-------------

PR: https://git.openjdk.org/jdk/pull/15917


More information about the hotspot-runtime-dev mailing list