RFR: 8370200: Crash: assert(outer->outcnt() >= phis + 2 - be_loads && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis [v3]
Roland Westrelin
roland at openjdk.org
Thu Dec 11 09:50:50 UTC 2025
On Wed, 10 Dec 2025 10:11:56 GMT, Damon Fenacci <dfenacci at openjdk.org> wrote:
>> Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision:
>>
>> - review
>> - Merge branch 'master' into JDK-8370200
>> - Update test/hotspot/jtreg/compiler/loopstripmining/TestMismatchedMemoryPhis.java
>>
>> Co-authored-by: Roberto Castañeda Lozano <robcasloz at users.noreply.github.com>
>> - Update test/hotspot/jtreg/compiler/loopstripmining/TestMismatchedMemoryPhis.java
>>
>> Co-authored-by: Roberto Castañeda Lozano <robcasloz at users.noreply.github.com>
>> - more
>> - test
>> - more
>> - fix
>
> src/hotspot/share/opto/cfgnode.cpp line 2753:
>
>> 2751:
>> 2752: bool PhiNode::can_be_replaced_by(const PhiNode* other) const {
>> 2753: return type() == Type::MEMORY && other->type() == Type::MEMORY && adr_type() != TypePtr::BOTTOM &&
>
> I think I might miss something but I was wondering if we strictly need to check for `adr_type() != TypePtr::BOTTOM`
Are you suggesting we could do:
bool PhiNode::can_be_replaced_by(const PhiNode* other) const {
return type() == Type::MEMORY && other->type() == Type::MEMORY && other->adr_type() == TypePtr::BOTTOM && has_same_inputs_as(other);
}
?
If there are 2 memory `Phi`s with same inputs and same `adr_type` then global value numbering should common them so that would make no difference.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28677#discussion_r2609907749
More information about the hotspot-compiler-dev
mailing list