RFR: 8253756: C2 CompilerThread0 crash in Node::add_req(Node*)
Roland Westrelin
roland at openjdk.java.net
Wed Oct 7 07:53:22 UTC 2020
The outer strip mined loop is initially created as a skeleton and then
expanded once loop opts are over. As long as it is a skeleton, the
OuterStripMinedLoopEndNode cannot be constant folded because its input
is a place holder. So OuterStripMinedLoopEndNode::Value() blocks
constant folding. This bug triggers because the
OuterStripMinedLoopEndNode input after expansion is a constant but the
OuterStripMinedLoopEndNode is not constant folded (i.e. it's a dead
loop but it stays in the graph). The fix I propose is to change the
behavior OuterStripMinedLoopEndNode::Value() so it blocks constant
folding only until expansion but not after.
-------------
Commit messages:
- OuterStripMinedLoopEndNode::Value() should behave like IfNode::Value() once the outer strip mined loop is expanded
Changes: https://git.openjdk.java.net/jdk/pull/537/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=537&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8253756
Stats: 84 lines in 3 files changed: 83 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/537.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/537/head:pull/537
PR: https://git.openjdk.java.net/jdk/pull/537
More information about the hotspot-compiler-dev
mailing list