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?!