RFR: 8257630: C2: ReplacedNodes doesn't handle non-CFG multi nodes

Vladimir Ivanov vlivanov at openjdk.java.net
Fri Dec 4 07:38:56 UTC 2020


On Fri, 4 Dec 2020 07:24:34 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

>> When looking up an immediate CFG node, ReplacedNodes assumes that control input is always a CFG node. 
>> It's not always the case: for example, a projection on a non-CFG multi node (`SCMemProj` and `LoadStore` respectively).
>> 
>> Proposed fix is to skip projection nodes first before checking for CFG.
>> 
>> Testing:
>> - [x] hs-tier1-6 w/ -XX:+AlwaysIncrementalInlining
>
> src/hotspot/share/opto/replacednodes.cpp line 157:
> 
>> 155:           if (n->is_Proj()) {
>> 156:             n = n->in(0);
>> 157:           }
> 
> I would suggest to merge this with the if below and adjust the comment to something like:
> `// Skip non-CFG nodes. Also skip projections, since some of the multi nodes aren't CFG (e.g., LoadStore and SCMemProj).`

I considered that, but it would turn it into a while loop. Do you think it is worth it?

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

PR: https://git.openjdk.java.net/jdk/pull/1580


More information about the hotspot-compiler-dev mailing list