https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118852
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
I see
<bb 22> [local count: 913217420]:
# _117 = PHI <hi$slot_14(30), _124(38)>
..
# vect_vec_iv_.1029_184 = PHI <_185(30), _186(38)>
# vect_vec_iv_.1031_195 = PHI <_196(30), _197(38)>
...
vect_x_23.1034_209 = MEM <vector(2) long unsigned int> [(void *
*)vectp_hi$slot.1032_207];
mask_patt_145.1035_210 = vect_x_23.1034_209 > { 1, 1 };
x_23 = MEM[(void * *)_117 + 8B];
# DEBUG x => x_23
# DEBUG BEGIN_STMT
if (mask_patt_145.1035_210 != { 0, 0 })
goto <bb 46>; [5.50%]
else
goto <bb 24>; [94.50%]
<bb 24> [local count: 862990462]:
PROF_edge_counter_47 = __gcov0.set_hashtable_value_ids_1_I_lsm.1017_98 + 1;
# DEBUG BEGIN_STMT
_16 = hi$slot_14 + 8;
# DEBUG hi$slot => _16
_185 = vect_vec_iv_.1029_184 + { 2, 2 };
_196 = vect_vec_iv_.1031_195 + { 16, 16 };
vectp_hi$slot.1032_208 = vectp_hi$slot.1032_207 + 16;
ivtmp_213 = ivtmp_212 + 1;
if (ivtmp_213 < bnd.1024_175)
goto <bb 30>; [94.50%]
else
goto <bb 41>; [5.50%]
<bb 30> [local count: 815525987]:
goto <bb 22>; [100.00%]
-> exit
<bb 46> [local count: 50226958]:
# _164 = PHI <_117(22)>
# vect_vec_iv_.1029_187 = PHI <vect_vec_iv_.1029_184(22)>
# vect_vec_iv_.1031_198 = PHI <vect_vec_iv_.1031_195(22)>
_199 = BIT_FIELD_REF <vect_vec_iv_.1031_198, 64, 0>;
_200 = (void * *) _199;
hi$slot_165 = _200;
_188 = BIT_FIELD_REF <vect_vec_iv_.1029_187, 64, 0>;
__gcov0.set_hashtable_value_ids_1_I_lsm.1017_166 = _188;
goto <bb 45>; [100.00%]
<bb 45> [local count: 97691433]:
# _159 = PHI <tmp.1026_177(41), _164(46)>
# hi$slot_162 = PHI <tmp.1027_179(41), hi$slot_165(46)>
# __gcov0.set_hashtable_value_ids_1_I_lsm.1017_163 = PHI <tmp.1028_181(41),
__gcov0.set_hashtable_value_ids_1_I_lsm.1017_166(46)>
<bb 47> [local count: 75982225]:
# _171 = PHI <_159(45), hi$slot_28(21)>
# hi$slot_173 = PHI <hi$slot_162(45), _103(21)>
# __gcov0.set_hashtable_value_ids_1_I_lsm.1017_174 = PHI
<__gcov0.set_hashtable_value_ids_1_I_lsm.1017_163(45),
__gcov0.set_hashtable_value_ids_1_I_lsm.1017_120(21)>
<bb 42> [local count: 710280212]:
# _46 = PHI <hi$slot_10(43), _171(47)>
# hi$slot_10 = PHI <_154(43), hi$slot_173(47)>
# __gcov0.set_hashtable_value_ids_1_I_lsm.1017_112 = PHI
<PROF_edge_counter_108(43),
__gcov0.set_hashtable_value_ids_1_I_lsm.1017_174(47)>
# DEBUG hi$slot => hi$slot_10
# DEBUG BEGIN_STMT
x_106 = MEM[(void * *)_46 + 8B];
# DEBUG x => x_106
# DEBUG BEGIN_STMT
if (x_106 > 1B)
so we next look at _46 == _171 == _159 == _164 == _117 which is the
original scalar IV, not _200 we compute from the vector IV we
add for this purpose.
Suspiciously BB 47 shows swapped PHI arg replacements?!