RFR: 8072483: AARCH64: aarch64.ad uses the wrong operand class for some operations
Andrew Dinn
adinn at redhat.com
Thu Feb 5 12:56:32 UTC 2015
On 05/02/15 10:32, Andrew Haley wrote:
> In a few instruction patterns we're using iReg<X> (all registers) rather
> than iReg<X>NoSp (all general registers) for an output. The difference
> between these operand classes is the set of fixed registers such as
> the frame pointer and the thread pointer. This causes C2's register
> allocator to try to use these registers, and predictably bad stuff
> happens.
>
> It's hard to find a reproducer for this bug because it only triggers
> at times of very high register pressure and the code generated may not
> even be visibly wrong. However, it sometimes causes assertion
> failures.
>
> http://cr.openjdk.java.net/~aph/aarch64-8072483/
Firstly, I'll take the blame for the NoSp suffix -- it was meant to
indicate 'no special' rather than 'no stack pointer'.
Second, I'm not a JDK9 committer, let alone reviewer, but, having
provided these NoSp register classes precisely to avoid the problem
Andrew mentions, I can confirm that the patch is correct and necessary.
regards,
Andrew Dinn
-----------
More information about the hotspot-dev
mailing list