mirror of
https://github.com/darlinghq/darling-openjdk.git
synced 2025-03-04 14:07:19 +00:00
8230062: assert(i == p->size()-1) failed: must be last element of the pack
Avoids vectorization of reduction chain in which an intermediate result is used. Reviewed-by: roland, thartmann
This commit is contained in:
parent
03c764c5e3
commit
08f652aa51
@ -2045,12 +2045,11 @@ bool SuperWord::profitable(Node_List* p) {
|
||||
for (uint k = 0; k < use->req(); k++) {
|
||||
Node* n = use->in(k);
|
||||
if (def == n) {
|
||||
// reductions should only have a Phi use at the the loop
|
||||
// head and out of loop uses
|
||||
// Reductions should only have a Phi use at the loop head or a non-phi use
|
||||
// outside of the loop if it is the last element of the pack (e.g. SafePoint).
|
||||
if (def->is_reduction() &&
|
||||
((use->is_Phi() && use->in(0) == _lpt->_head) ||
|
||||
!_lpt->is_member(_phase->get_loop(_phase->ctrl_or_self(use))))) {
|
||||
assert(i == p->size()-1, "must be last element of the pack");
|
||||
(!_lpt->is_member(_phase->get_loop(_phase->ctrl_or_self(use))) && i == p->size()-1))) {
|
||||
continue;
|
||||
}
|
||||
if (!is_vector_use(use, k)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user