RFR(S): 8168283: adlc: fix error expanding expanded nodes.
Lindenmaier, Goetz
goetz.lindenmaier at sap.com
Wed Oct 19 14:44:52 UTC 2016
Hi,
This fixes a small error in the expand methods usually generated from expand rules by adlc.
Actually all nodes get an expand method generated, as it's used to finish construction of nodes after the matcher generated them. E.g., temp nodes are added in the expand.
The error occurs for a 'real' expand generating several sub nodes. The 'real' expand rule calls expand of the newly generated nodes, let's call it sub-expand.
Unfortunately the matcher sometimes generates superfluous operands that are removed in the expand methods. The 'real' expand generating sub-nodes does not generate these superfluous operands, therefore running the sub-expand crashes when it tries to remove these.
This change adds a simple check in the sub-expand to avoid this crash. Also it adds setting the correct number of operands in the expand that generates the sub node.
An example of an adl instruct declaration and the generated code is attached to the bug. We see this in a rule for the s390 port.
http://cr.openjdk.java.net/~goetz/wr16/8168283-adlc_expand/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8168283
Please review this change. I please need a sponsor.
Best regards,
Goetz.
More information about the hotspot-compiler-dev
mailing list