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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Replaced _40 - _41 with pretmp_163 in all uses of _42 = _40 - _41;
Replaced _42 /[ex] 4 with pretmp_162 in all uses of _43 = _42 /[ex] 4;
Replaced (long unsigned int) _43 with pretmp_161 in all uses of _44 = (long
unsigned int) _43;
Removing unexecutable edge from if (_42 != 0)
Removing dead stmt _44 = (long unsigned int) _43;
Removing dead stmt _43 = _42 /[ex] 4;
Removing dead stmt _42 = _40 - _41;
Removing dead stmt _41 = MEM[(const struct vector
*)_3(D)].D.214899._M_impl.D.214244._M_start;
Removing dead stmt _40 = MEM[(const struct vector
*)_3(D)].D.214899._M_impl.D.214244._M_finish;


What is interesting is before PRE we had:
```
  <bb 28> [local count: 19488414]:
  if (_42 != 0)
    goto <bb 29>; [59.00%]
  else
    goto <bb 33>; [41.00%]

  <bb 29> [local count: 11498164]:
  __n_154 = _43 + -1;
  if (_42 != 0)
    goto <bb 44>; [89.00%]
  else
    goto <bb 33>; [11.00%]
```

After we got:
```
  <bb 30> [local count: 19488414]:
  if (pretmp_163 != 0)
    goto <bb 31>; [59.00%]
  else
    goto <bb 58>; [41.00%]

  <bb 58> [local count: 7990250]:
  goto <bb 35>; [100.00%]

  <bb 31> [local count: 11498164]:
  __n_154 = pretmp_162 + -1;
```

That is only the second condition based on _42 was removed and not the first
...

Reply via email to