https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128117

ptomsich at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |ptomsich at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      
|konstantinos.eleftheriou@vr
                   |                            |ull.eu

--- Comment #2 from ptomsich at gcc dot gnu.org ---
Confirmed.  Fix will be submitted shortly.

Rows 4 and 5 of long_mul_table in gcc/tree-ssa-forwprop.cc cover the two ladder
forms:

Row     Form
4       xh*yh + (hilo >> N) + (ladder_sum1 >> N)
5       xh*yh + (ladder_sum2 >> N) + (ladder_part_sum >> N)

In both forms, the ladder sum masks one cross-half and adds the other unmasked.
The unmasked one’s high half reaches the result through the sum, so the high
half the row adds on its own must belong to the masked cross-half.

long_mul_check_consistency only requires the two cross-halves inside the sum to
be different products. Both rows have extra_check == NULL, so nothing ties the
separate term to the masked product.

Reply via email to