[Bug tree-optimization/110204] [14 Regression] Suspicous warning when compiling ranges-v3 using GCC trunk (iteration 9223372036854775807 invokes undefined behavior)
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jul 15 03:56:34 GMT 2023
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
...
More information about the Gcc-bugs
mailing list