RFR: 8290432: C2 compilation fails with assert(node->_last_del == _last) failed: must have deleted the edge just produced [v3]

Tobias Hartmann thartmann at openjdk.org
Wed Nov 16 12:27:48 UTC 2022


On Tue, 9 Aug 2022 12:51:33 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

>> Yi Yang has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   update comment
>
> src/hotspot/share/opto/loopnode.cpp line 3688:
> 
>> 3686:     if (incr2->in(1)->is_ConstraintCast() && !incr2->in(1)->in(0)->is_RangeCheck()) {
>> 3687:       // Skip AddI->CastII->Phi case if CastII is not controlled by local RangeCheck
>> 3688:       // to reflect changes in LibraryCallKit::inline_preconditions_checkIndex
> 
> In the valid case, isn't the ConstraintCast control input `incr2->in(1)->in(0)` the IfTrue projection of the RangeCheck?
> 
> I would remove the second line because it's not clear which "changes" in `LibraryCallKit::inline_preconditions_checkIndex` it is referring to.
> 
> Suggestion:

It's still not clear to me how the `incr2->in(1)->in(0)->is_RangeCheck()` condition can ever be true. How can the control input of a ConstraintCast be a RangeCheck? Shouldn't there be a projection node in-between?

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

PR: https://git.openjdk.org/jdk/pull/9695


More information about the hotspot-compiler-dev mailing list