RFR: 8072483: AARCH64: aarch64.ad uses the wrong operand class for some operations
Andrew Haley
aph at redhat.com
Thu Feb 5 10:32:25 UTC 2015
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/
Andrew.
More information about the hotspot-dev
mailing list