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

Reply via email to